`
Clayz
  • 浏览: 297075 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

Filter对权限和session的控制

    博客分类:
  • Java
阅读更多

用Filter防止用户访问一些未被授权的资源,比如一个用户未登录就不允许访问网站的某些页面,并将页面重定向到需要用户登录的页面,下面是一个相关的例子:

java 代码
 
  1. package  com.drp.util.filter;  
  2.   
  3. import  java.io.IOException;  
  4.   
  5. import  javax.servlet.Filter;  
  6. import  javax.servlet.FilterChain;  
  7. import  javax.servlet.FilterConfig;  
  8. import  javax.servlet.ServletException;  
  9. import  javax.servlet.ServletRequest;  
  10. import  javax.servlet.ServletResponse;  
  11. import  javax.servlet.http.HttpServletRequest;  
  12. import  javax.servlet.http.HttpServletResponse;  
  13. import  javax.servlet.http.HttpSession;  
  14.   
  15. public   class  AuthFilter  implements  Filter {  
  16.   
  17. public   void  destroy() {  
  18.   
  19. }  
  20.   
  21. public   void  doFilter(ServletRequest servletRequest, ServletResponse servletResponse,  
  22.     FilterChain filterChain) throws  IOException, ServletException { //1, doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用 servlet或JSP页。   
  23.   
  24.    HttpServletRequest request = (HttpServletRequest)servletRequest;//;//如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此request对象构造成HttpServletRequest   
  25.    HttpServletResponse response = (HttpServletResponse)servletResponse。  
  26.   
  27.    String currentURL = request.getRequestURI();//取得根目录所对应的绝对路径:   
  28.   
  29.    String targetURL = currentURL.substring(currentURL.indexOf("/" 1 ), currentURL.length());   //截取到当前文件名用于比较   
  30.   
  31.    HttpSession session = request.getSession(false );  
  32.     
  33.    if  (! "/login.jsp" .equals(targetURL)) { //判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环   
  34.     if  (session ==  null  || session.getAttribute( "user" ) ==  null ) { //*用户登录以后需手动添加session   
  35.      System.out.println("request.getContextPath()="  + request.getContextPath());  
  36.      response.sendRedirect(request.getContextPath() + "/login.jsp" ); //如果session为空表示用户没有登录就重定向到login.jsp页面   
  37.      return ;  
  38.     }  
  39.    }  
  40.    //加入filter链继续向下执行   
  41.    filterChain.doFilter(request, response);//.调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。   
  42.   
  43. }  
  44.   
  45. public   void  init(FilterConfig filterConfig)  throws  ServletException {


然后在配置文件web.xml里添加: (请注意,过滤是在serlvet规范2.3版中初次引入的。因此,web.xml文件必须使用DTD的2.3以上版本。)

xml 代码
 
  1. < filter >   
  2. < filter-name > AuthFilter </ filter-name >   
  3. < filter-class > com.drp.util.filter.AuthFilter </ filter-class >   
  4. </ filter >   
  5.     
  6. < filter-mapping >   
  7. < filter-name > AuthFilter </ filter-name >   
  8. < url-pattern > *.jsp </ url-pattern > //表示对所有jsp文件有效  
  9. </ filter-mapping >  

 

这样用户没有登录的情况下就会转到登录页面。

分享到:
评论

相关推荐

    Filter进行权限控制

    在这个场景中,"Filter进行权限控制"指的是使用`Filter`来实现用户访问权限的管理,确保只有登录后的用户才能访问特定的资源。下面我们将深入探讨`Filter`的工作原理以及如何实现登录控制。 `Filter`是Java Servlet...

    filter 实现权限控制

    通过以上步骤,我们可以实现一个基于RBAC的权限控制系统,利用`Filter`对用户请求进行拦截,确保只有拥有相应角色的用户才能访问特定的页面或功能。这种方式既提高了系统的安全性,也简化了权限管理的复杂度。 在...

    osgi session共享 支持springmvc 配置个filter即可

    总结来说,实现OSGi环境下的Session共享涉及了对OSGi、Karaf、Spring MVC以及Filter机制的理解和应用。通过编写并配置Filter,我们可以跨Bundle共享Session,从而使多个服务能够协同工作,保持用户状态的一致性。...

    Struts2:利用filter、session实现访问控制和身份认证[收集].pdf

    Struts2:利用 Filter 和 Session 实现访问控制和身份认证 Struts2 是一个基于 Java 语言的 Web 应用程序框架,它提供了许多功能强大且灵活的组件来帮助开发者快速构建 Web 应用程序。在 Web 应用程序中,身份认证...

    Filter控制页面的访问权限

    【Filter控制页面的访问权限】是指在Web应用中,通过Filter(过滤器)技术来实现对用户访问特定页面的权限管理。Filter是Java Servlet API的一部分,它可以拦截HTTP请求,在请求到达目标Servlet或JSP之前进行预处理...

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

    javaweb实现的访问权限控制示例

    Filter可以在Servlet执行前后进行预处理和后处理,从而实现数据过滤、登录验证、权限控制等多种功能。 在“javaweb实现的访问权限控制示例”中,我们主要关注的是如何利用Filter进行权限校验。通常,我们会创建一个...

    SpringBoot整合Shiro,实现从数据库加载权限、权限的动态更新、Session共享

    总结,SpringBoot与Shiro的整合,提供了从数据库加载权限、权限动态更新和Session共享的能力,实现了安全控制与业务逻辑的解耦,提高了开发效率和系统的安全性。在具体实践中,开发者需根据项目需求进行定制化配置,...

    filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    `Filter`过滤器是Java Servlet技术中的一种机制,用于对HTTP请求和响应进行预处理和后处理,从而实现诸如权限验证、数据转换、日志记录等功能。在这个场景中,我们将探讨如何使用`Filter`来实现权限访问控制,以及...

    Java Filter 限制用户浏览权限

    本话题主要关注如何使用Java Filter来限制用户的浏览权限,确保只有经过身份验证和授权的用户才能访问特定的资源。这在构建安全的Web应用程序时至关重要。 首先,我们需要了解Java Filter的基本概念。Filter是...

    filter 过滤用户权限

    本篇将详细探讨`filter`如何用于过滤非登录用户的权限控制,以及相关的源码实例。 一、Filter基本概念 在Java Servlet规范中,Filter是一个接口,它允许开发者在请求到达Servlet之前对其进行拦截和处理,也可以在...

    java后台权限控制

    Java 后台权限控制是构建安全的Web应用中不可或缺的一部分,它确保了用户只能访问他们被授权的操作和数据。在Java开发中,Apache Shiro是一个非常流行的安全框架,用于实现身份验证、授权(权限控制)、会话管理和...

    利用Filter限制用户浏览权限

    本话题将详细探讨如何利用Filter来限制用户浏览特定的页面,以实现用户权限控制。 一、Filter概述 Filter是Servlet规范的一部分,它允许开发者在请求到达目标资源(如Servlet或JSP)之前和之后对请求和响应进行拦截...

    过滤器实现多层权限控制

    在IT行业中,权限控制是系统安全的重要组成部分,尤其是在企业级应用和网站开发中。过滤器(Filter)技术常被用来实现多层权限控制,确保只有合法的用户才能访问特定的资源。本文将深入探讨如何利用过滤器实现多层...

    Servlet Filter 实现权限拦截

    Servlet Filter 是Java Web开发中的一个重要...通过以上讲解,你应该对使用Servlet Filter实现权限拦截有了清晰的理解。在实际项目中,结合`testServlet`等示例文件,你可以进一步实践这些概念,以加深理解并灵活应用。

    filter_权限过滤器

    "filter_权限过滤器"指的是利用过滤器来控制用户访问特定资源的权限,确保只有具有相应权限的用户才能访问敏感数据或执行特定操作。这是一种最佳实践,能够提供全面且安全的权限管理。 过滤器是Servlet规范的一部分...

    WEB应用数据权限控制.pdf

    通过以上分析,我们可以看出WEB应用数据权限控制是一个多层次、多技术融合的领域,它要求开发人员和系统架构师不仅要熟悉WEB技术栈和数据库操作,还要精通权限控制和安全管理。在实际开发过程中,还需要考虑到性能...

    SSM项目集成shiro搭建session共享

    在实际集成过程中,我们需要配置Shiro的 Realm(认证和授权),SessionManager(管理session),CacheManager(使用Redis作为缓存),以及Filter Chain定义,确保请求经过正确的过滤器链。同时,需要在每个节点...

    Spring Security 权限控制中文API

    这个“Spring Security 权限控制中文API”很可能是对Spring Security框架的中文文档或指南,帮助开发者理解和使用权限控制功能。 Spring Security的核心在于保护资源、进行身份验证(Authentication)和授权...

    shiro中session的共享问题与完成前后端权限的校验

    同时,前端也可以根据Shiro返回的权限信息,动态控制页面元素的显示和隐藏,实现权限控制的前后端分离。 总的来说,Shiro为Java开发者提供了强大且易用的安全管理工具,解决了Session共享问题,并能有效地进行权限...

Global site tag (gtag.js) - Google Analytics