1 概述
需求:
项目现场将系统部署到外网可访问,但是希望限制只能够是手机、Pad等移动设备可访问,通过PC不能访问。
...
2,使用过滤器拦截用户请求,如果发现请求的地址不是上面系统选项配置的,并且设备是PC,就重定向到一个提示页面,提示只能通过移动设备使用,过滤器的配置请见扩展插件开发基础(内含目录及配置文件介绍)中的插件生命文件extension.xm的说明l。
最终效果截图如下:
相应地址访问就会找不到该网址
2 编写修改代码
2.1 在ItemLimitAddr.js文件中添加系统选项配置限制访问的地址
...
代码块 |
---|
@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)
这个示例代码,包含了示例限制用户登陆移动设备的数量。
...