欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【转】防止用户直接访问url的权限控制

程序员文章站 2022-07-06 13:46:36
...
这是个过滤器的内容:

public void doFilter(ServletRequest request, ServletResponse response, 
             FilterChain chain) throws IOException, ServletException { 
     HttpServletRequest req = (HttpServletRequest) request; 
     HttpServletResponse resp = (HttpServletResponse) response; 
     String conString = ""; 
     conString = req.getHeader("REFERER");//获取父url--如果不是直接输入的话就是先前的访问过来的页面,要是用户输入了,这个父url是不存在的  
     if("".equals(conString) || null==conString){ //判断如果上一个目录为空的话,说明是用户直接输入url访问的  
          String servletPath = req.getServletPath();//当前请求url,去掉几个可以直接访问的页面  
          if(servletPath.contains("index.jsp") || servletPath.contains("admin/login.jsp")){ //跳过index.jsp和登陆Login.jsp  
               chain.doFilter(request, response); 
          } else { 
               resp.sendRedirect("/ejuornal/index.jsp");//跳回首页  
          } 
     } else { 
             chain.doFilter(request, response); 
     } 
}


下面是过滤器的配置文件:

 <?xml version="1.0" encoding="UTF-8"?> 
 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 
   <display-name></display-name> 
   <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
   </welcome-file-list> 
   <filter> 
     <filter-name>FilterPages</filter-name> 
     <filter-class>com.ejuornal.filter.FilterPages</filter-class> 
   </filter> 
   <filter-mapping> 
     <filter-name>FilterPages</filter-name> 
     <url-pattern>*.jsp</url-pattern>   
   </filter-mapping> 
 </web-app>

这时候再去直接输入url时就会在跳回首页。

---------------------------------------------------------------------

以上方法经测试确实可用。

原文地址:http://blog.csdn.net/liwf_/article/details/8950038