zoukankan      html  css  js  c++  java
  • Spring Security 过滤器链

    AliasFilter ClassNamespace Element or Attribute

    CHANNEL_FILTER

    ChannelProcessingFilter

    http/intercept-url@requires-channel

    SECURITY_CONTEXT_FILTER

    SecurityContextPersistenceFilter

    http

    CONCURRENT_SESSION_FILTER

    ConcurrentSessionFilter

    session-management/concurrency-control

    HEADERS_FILTER

    HeaderWriterFilter

    http/headers

    CSRF_FILTER

    CsrfFilter

    http/csrf

    LOGOUT_FILTER

    LogoutFilter

    http/logout

    X509_FILTER

    X509AuthenticationFilter

    http/x509

    PRE_AUTH_FILTER

    AbstractPreAuthenticatedProcessingFilter

    N/A

    CAS_FILTER

    CasAuthenticationFilter

    N/A

    FORM_LOGIN_FILTER

    UsernamePasswordAuthenticationFilter

    http/form-login

    BASIC_AUTH_FILTER

    BasicAuthenticationFilter

    http/http-basic

    SERVLET_API_SUPPORT_FILTER

    SecurityContextHolderAwareRequestFilter

    http/@servlet-api-provision

    JAAS_API_SUPPORT_FILTER

    JaasApiIntegrationFilter

    http/@jaas-api-provision

    REMEMBER_ME_FILTER

    RememberMeAuthenticationFilter

    http/remember-me

    ANONYMOUS_FILTER

    AnonymousAuthenticationFilter

    http/anonymous

    SESSION_MANAGEMENT_FILTER

    SessionManagementFilter

    session-management

    EXCEPTION_TRANSLATION_FILTER

    ExceptionTranslationFilter

    http

    FILTER_SECURITY_INTERCEPTOR

    FilterSecurityInterceptor

    http

    SWITCH_USER_FILTER

    SwitchUserFilter

    N/A  

    每个过滤器的作用:

     1、SecurityContextPersistenceFilter(SECURITY_CONTEXT_FILTER):请求进来时,创建SecurityContext;请求结束时,清空SecurityContextHolder。

    延伸阅读:SecurityContextHolder、SecurityContext、Authentication的区别?
    在SecurityContextHolder中我们保存了当前与应用交互的principal数据,Spring Security使用一个Authentication对象来保存和展示这些数据。你不需要自己手工创建一个Authentication对象,而且查询这个对象也相当的简单, getContext()方法返回的对象是SecurityContext接口的实例,这就是保存在ThreadLocal局部变量中的对象,你可以使用下面的代码(在你的应用的任意位置)获取当前认证用户的姓名信息:
    Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    if (principal instanceof UserDetails) {
       String username = ((UserDetails)principal).getUsername();
    } else {
       String username = principal.toString();
    }    

    2、CsrfFilter (CSRF_FILTER):在spring4这个版本中被默认开启的一个过滤器,用于防止csrf攻击

    3、LogoutFilter (LOGOUT_FILTER):处理注销请求。参考 https://blog.csdn.net/py_xin/article/details/52634880

    4、CasAuthenticationFilter(CAS_FILTER)

    5、UsernamePasswordAuthenticationFilter(FORM_LOGIN_FILTER):表单提交了username和password,被封装成token进行一系列的认证,便是主要通过这个过滤器完成的,在表单认证的方法中,这是最最关键的过滤器。

    6、FilterSecurityInterceptor(FILTER_SECURITY_INTERCEPTOR) : 这个过滤器决定了访问特定路径应该具备的权限,访问的用户的角色,权限是什么?访问的路径需要什么样的角色和权限?这些判断和处理都是由该类进行的。

    7、与CAS集成,参考:https://blog.csdn.net/zh350229319/article/details/50517921

    8、自定义拦截器,参考:https://blog.csdn.net/chaozhi_guo/article/details/46365735

  • 相关阅读:
    750. Number Of Corner Rectangles
    [Project Euler] 3. Largest Prime factor
    [Project Euler] 2. Even Fibonacci numbers
    Jmeter学习笔记3-参数化
    SQL多表连接查询补充
    Jmeter学习笔记2-原件作用域与执行顺序
    Jmeter学习笔记1-实践介绍
    运用badboy录制jmeter脚本
    【SQL提数】左连接使用
    【功能测试技巧2】dubbo引起的数据精度的思考
  • 原文地址:https://www.cnblogs.com/aligege/p/9396476.html
Copyright © 2011-2022 走看看