zoukankan      html  css  js  c++  java
  • SpringSecurityFilter 链

    1. HttpSessionContextIntegrationFilter

    位于过滤器顶端,第一个起作用的过滤器。

    用途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了。如果存在,就把SecurityContext拿出来,放到SecurityContextHolder中,供Spring Security的其他部分使用。如果不存在,就创建一个SecurityContext出来,还是放到SecurityContextHolder中,供Spring Security的其他部分使用。

    用途二,在所有过滤器执行完毕后,清空SecurityContextHolder,因为SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,会受到服务器的线程池机制的影响。

     

    2. LogoutFilter

    只处理注销请求,默认为/j_spring_security_logout。

    用途是在用户发送注销请求时,销毁用户session,清空SecurityContextHolder,

    然后重定向到注销成功页面。可以与rememberMe之类的机制结合,在注销的同时清空用户cookie。

     

    3. AuthenticationProcessingFilter

    处理form登陆的过滤器,与form登陆有关的所有操作都是在此进行的。

    默认情况下只处理/j_spring_security_check请求,这个请求应该是用户使用form登陆后的提交地址

    此过滤器执行的基本操作时,通过用户名和密码判断用户是否有效,如果登录成功就跳转到成功页面

    (可能是登陆之前访问的受保护页面,也可能是默认的成功页面),如果登录失败,就跳转到失败页面。

     

    4. DefaultLoginPageGeneratingFilter

    此过滤器用来生成一个默认的登录页面,默认的访问地址为/spring_security_login,

    这个默认的登录页面虽然支持用户输入用户名,密码,也支持rememberMe功能,但是因为太难看了,

    只能是在演示时做个样子,不可能直接用在实际项目中。

     

    5. BasicProcessingFilter

    此过滤器用于进行basic验证,功能与AuthenticationProcessingFilter类似,只是验证的方式不同。

     

    6. SecurityContextHolderAwareRequestFilter

    此过滤器用来包装客户的请求。目的是在原始请求的基础上,为后续程序提供一些额外的数据。比如getRemoteUser()时直接返回当前登陆的用户名之类的。

     

    7. RememberMeProcessingFilter

    此过滤器实现RememberMe功能,当用户cookie中存在rememberMe的标记,此过滤器会根据标记自动实现用户登陆,并创建SecurityContext,授予对应的权限。

     

    8. AnonymousProcessingFilter

    为了保证操作统一性,当用户没有登陆时,默认为用户分配匿名用户的权限。

     

    9. ExceptionTranslationFilter

    此过滤器的作用是处理中FilterSecurityInterceptor抛出的异常,然后将请求重定向到对应页面,或返回对应的响应错误代码

     

    10. SessionFixationProtectionFilter

    防御会话伪造攻击。有关防御会话伪造的详细信息

     

    11. FilterSecurityInterceptor

    用户的权限控制都包含在这个过滤器中。

    功能一:如果用户尚未登陆,则抛出AuthenticationCredentialsNotFoundException“尚未认证异常”。

    功能二:如果用户已登录,但是没有访问当前资源的权限,则抛出AccessDeniedException“拒绝访问异常”。

    功能三:如果用户已登录,也具有访问当前资源的权限,则放行。

    所有的过滤器都会实现SpringSecurityFilter安全过滤器。。。

     

    image

  • 相关阅读:
    Javascript FP-ramdajs
    微信小程序开发
    SPA for HTML5
    One Liners to Impress Your Friends
    Sass (Syntactically Awesome StyleSheets)
    iOS App Icon Template 5.0
    React Native Life Cycle and Communication
    Meteor framework
    RESTful Mongodb
    Server-sent Events
  • 原文地址:https://www.cnblogs.com/xmanblue/p/7274385.html
Copyright © 2011-2022 走看看