1 概述
需求:
由于互联网可以直接通过WEB登陆并访问业务数据;需要限制外网通过Web访问报表系统,只能够是手机、Pad等设备访问 项目现场将系统部署到外网可访问,但是希望限制只能够是手机、Pad等移动设备可访问,通过PC不能访问。
注意:本示例来源于实际项目,原始版本是V5.0,可作为参考性质,也许是不能运行的。
实现方案:
1,添加系统选项配置限制访问的地址;
2,使用过滤器拦截用户请求,如果发现请求的地址不是上面系统选项配置的,并且设备是PC,就重定向到一个提示页面,提示只能通过移动设备使用
...
代码块 |
---|
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // TODO Auto-generated method stub System.out.println("该url正在过滤。。。。。"); HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; servletRequest.setCharacterEncoding("UTF-8"); //获取系统选项的"限制访问的地址"的值 ConfigClientService cs = ConfigClientService.getInstance(); ISystemConfig sc = cs.getSystemConfig("NEW_SYSTEM_CONFIG_ItemLimitAddr"); String value = null; if(sc!=null){ value= sc.getValue(); } //获取访问的ip地址 String ip = request.getLocalAddr(); LOG.info("ip:"+ip+",value:"+value); if (ip.equals(value)) { String requestHeader = request.getHeader("user-agent"); if (LimitAddrFilter.isMobileDevice(requestHeader)) { System.out.println("使用手机浏览器"); filterChain.doFilter(servletRequest, servletResponse); } else { System.out.println("使用web浏览器"); response.sendRedirect(request.getContextPath()+"/404/404.jsp"); return; } } else { filterChain.doFilter(servletRequest, servletResponse); } } |
3
...
相关资源(EPPR-8002)