`
xltgod
  • 浏览: 16631 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

filter:登陆验证和权限验证

 
阅读更多
一、在MyEclipse中定义filter

  只要在新建普通类时让它实现Filter接口就可以了。然后IDE会自动导入相关必须的类(还挺多的),而且一般会生成3个方法:




[java] view plaincopy
01.public void init(FilterConfig filterConfig) throws ServletException 
02.public void doFilter(ServletRequest req, ServletResponse res, 
03.            FilterChain chain) throws IOException, ServletException 
04.public void destroy() 


  一般只需要在doFilter方法体内编写相关代码就行。



二、已登陆验证

  除了首页外,只有用户成功登陆后才能进入其他页面。为了防止用户通过在浏览器地址栏输入地址非法进入这些页面,可以定义一个filter,当进入这些页面时,检查session的相关属性是否存在。只要客户浏览器没有关闭,session对象会一直保持,只要其中的属性没有被更改,将会一直保持。

  在LoginFilter的doFilter方法体内编写如下代码:




[java:firstline[26]] view plaincopy
26.HttpServletRequest request=(HttpServletRequest)req; 
27.        HttpServletResponse response=(HttpServletResponse)res; 
28.        String currentURL=request.getRequestURI(); 
29.        String currentPage=currentURL.substring(currentURL.lastIndexOf("/"),currentURL.length()); 
30.         
31.        //判断是否进入LoginServlet 
32.        if(currentPage!=null&¤tPage.equals("/LoginServlet")){ 
33.            //如果不是从首页进入 
34.            if(request!=null&& 
35.                    (request.getParameter("action")==null 
36.                            ||(!(request.getParameter("action").equals("checkLogin")) 
37.                            &&!(request.getParameter("action").equals("updatePasswd")) 
38.                            &&!(request.getParameter("action").equals("logoff"))))){ 
39.                response.sendRedirect("/webExam/index.jsp"); 
40.                return; 
41.            }//end 如果不是从首页进入 
42.        }//end 判断是否进入LoginServlet 
43.        else{//进入其他页面 
44.            HttpSession s=request.getSession(); 
45.            String identity=(String)s.getAttribute("identity"); 
46.            //如果是非登陆进入的 
47.            if(identity==null||identity.equals("")){ 
48.                response.sendRedirect("/webExam/index.jsp"); 
49.                return; 
50.            }//end 如果是非登陆进入的 
51.        } 
52.         
53.        //把请求发送给下一个过滤器 
54.        chain.doFilter(req,res); 


26、27行将请求与响应对象强制转换为Http...类型。

29行获取网址中最后一个"/"之后的内容,也就是实际进入的页面文件名。

32行出现的LoginServlet是用来验证登陆、注销以及密码修改这三个操作的。要执行哪一个操作可以使用request的action属性来判断。因此,只要都不是这些操作,就可以确认是非法进入,强制跳转到首页中——有漏洞,应该还要判定该用户是否已经成功登陆。



43行的分支是对其他页面的验证,这些页面是只有登陆成功的用户才能进入的。



三、在web.xml中配置

  因为进行身份验证的Filter的实现逻辑类似,故不再阐述。

配置格式如下:



[xhtml] view plaincopy
01.<filter> 
02.  <description>限制未登录的用户访问页面资源</description> 
03.  <filter-name>LoginFilter</filter-name> 
04.  <filter-class>filters.LoginFilter</filter-class> 
05. </filter> 
06. <filter> 
07.  <description>身份验证</description> 
08.  <filter-name>IdentityFilter</filter-name> 
09.  <filter-class>filters.IdentityFilter</filter-class> 
10. </filter> 


这里定义了两个Filter,定义顺序应该决定执行顺序吧。



然后还要配置该Filter对哪些页面起作用




[xhtml] view plaincopy
01.<filter-mapping> 
02.  <filter-name>LoginFilter</filter-name> 
03.  <url-pattern>/student/*</url-pattern> 
04. </filter-mapping> 
05. <filter-mapping> 
06.  <filter-name>LoginFilter</filter-name> 
07.  <url-pattern>/teacher/*</url-pattern> 
08. </filter-mapping> 
09. <filter-mapping> 
10.  <filter-name>LoginFilter</filter-name> 
11.  <url-pattern>/servlet/*</url-pattern> 
12. </filter-mapping> 


这三个filter-mapping的不同之处仅在于url-pattern这里,貌似没有方法一次过写上三个路径,所以这里只要分三个来写了。
分享到:
评论

相关推荐

    使用struts2拦截器对登陆权限验证

    结合使用Struts2拦截器和Servlet Filter,我们可以构建出强大的权限验证机制。拦截器适用于Action级别的控制,而Filter则可以全局拦截所有请求,两者相辅相成,确保只有已登录用户才能访问受保护的资源。 在提供的`...

    springmvc权限验证demo

    3. **拦截器与过滤器**:Spring MVC的权限验证通常结合拦截器(`HandlerInterceptor`)和过滤器(`Filter`)一起使用。`Filter`可以用于全局的请求处理,如登录检查、CSRF防护等,而`Interceptor`则可以对特定的...

    JSP权限管理系统filter

    Filter可以用来进行权限验证、数据转换、日志记录等多种任务。在JSP权限管理系统中,Filter主要用于检查用户的登录状态,以及权限匹配,确保只有合法用户才能访问特定的JSP页面。 **Filter工作原理:** 当用户发起...

    使用Filter实现登录权限验证

    首先,我们来看一下标题和描述中提到的核心概念——Filter登录权限验证。这是通过Filter来检查用户是否已经登录,如果用户未登录,系统将阻止他们访问受保护的页面,而是引导他们去登录界面。这个过程通过自定义的...

    shiroFilter权限验证

    -- authc:该过滤器下的页面必须验证后才能访问,它是Shiro内置的一个拦截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter --&gt; &lt;property name="filterChainDefinitions"&gt; /statics/**=anon ...

    Filter进行权限控制

    文件名`TestFilter`可能表示一个测试过滤器,用于验证权限控制的实现。在实际开发中,可以创建一个测试环境,模拟不同的用户状态和请求,确保过滤器按预期工作。 5. **安全性考量**: 虽然示例中给出了用户名和...

    filter 实现权限控制

    7. **异常处理**: 设置适当的异常处理机制,以处理权限验证失败等情况,确保系统的健壮性。 通过以上步骤,我们可以实现一个基于RBAC的权限控制系统,利用`Filter`对用户请求进行拦截,确保只有拥有相应角色的用户...

    MVC3 Filter 验证 AOP 实例

    这个压缩包“Mvc3Filter”可能包含了演示如何在MVC3项目中实现和使用Filter验证AOP的具体示例代码,包括Filter的定义、注册以及验证功能的实现。通过研究这些示例,你可以更深入地理解如何在实际项目中应用这些概念...

    Java Filter 限制用户浏览权限

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

    servlet 过滤器做的简单登陆demo

    在这个“servlet过滤器做的简单登陆demo”中,我们将探讨如何利用过滤器实现一个基础的登录验证系统。这个例子非常适合初学者理解和实践过滤器的用法。 1. **Servlet Filter原理**: Servlet过滤器遵循`Filter`...

    利用Filter限制用户浏览权限

    例如,我们可以检查请求中的session信息,或者使用Spring Security等框架进行更复杂的权限验证。 ```java // 获取session中的用户信息 User user = (User) request.getSession().getAttribute("currentUser"); // ...

    java自学===Filter类的应用,验证用户

    `Filter`类的应用主要体现在对HTTP请求和响应进行预处理和后处理,比如权限验证、数据编码转换、日志记录等。在这个主题中,我们将深入探讨如何使用`Filter`进行用户验证。 一、Filter接口简介 `javax.servlet....

    jsp+servlet+filter+javabean 权限实例代码

    在本文中,我们将深入探讨...总的来说,通过结合使用JSP、Servlet、Filter和JavaBean,我们可以创建一个健壮的权限管理系统,确保只有经过身份验证的用户才能访问敏感资源。这在实际的Web应用开发中是非常常见的实践。

    注释最全,一步步详解 shiro-ssm登录认证权限授予验证案例.zip

    - 编写测试用例,模拟不同场景的登录、权限验证,确保 Shiro 整合的正确性。 通过这个案例,你可以全面了解如何在实际项目中应用 Shiro 进行用户认证和授权,为你的系统提供安全基础。案例中包含的详细步骤和代码...

    Servlet Filter 实现权限拦截

    - 可以通过多个Filter组合实现复杂的拦截逻辑,例如先进行身份验证,再进行权限检查。 - 为Filter提供明确的名称和合理的URL映射,以便于理解和维护。 通过以上讲解,你应该对使用Servlet Filter实现权限拦截有了...

    通过过滤器管理用户权限(2)

    - Spring Security的Filter可以与JWT(JSON Web Tokens)配合,实现基于令牌的身份验证和授权。 - CORS(跨源资源共享)Filter可以确保跨域请求的安全性,限制未经授权的请求。 6. **异常处理和错误页面** - 当...

    WCF通过消息拦截进行身份验证

    1. **最小权限原则**:只给予验证成功后的用户执行所需操作的权限。 2. **日志记录**:记录验证尝试,以便于监控和分析潜在的安全问题。 3. **测试**:进行全面的测试,确保自定义验证机制在各种情况下都能正常工作...

    jsp做的权限管理系统

    3. **权限验证**:在用户尝试访问资源时,系统进行权限验证。 4. **权限刷新**:如果权限发生变更,系统需要实时更新用户的权限状态。 综上所述,"jsp做的权限管理系统"是一个全面的解决方案,它涉及到用户管理、...

    ssm整合shiro实现用户权限验证的增删改查实例demo.zip

    通过以上步骤,我们可以构建一个基于SSM和Shiro的权限管理系统,能够实现用户登录、权限验证、增删改查操作等功能。这个实例将帮助开发者深入理解SSM与Shiro的整合,提升Java Web应用的安全性。

    用过滤器验证登陆框架,简单实例

    标题中的“用过滤器验证登陆框架,简单实例”指的是在Web开发中,使用过滤器(Filter)技术来实现用户登录验证的一种常见方法。过滤器是Servlet技术的一部分,它允许我们在请求到达目标资源(如Servlet、JSP页面)...

Global site tag (gtag.js) - Google Analytics