Spring security ---Filter的使用

1 篇文章 0 订阅
1 篇文章 0 订阅
类名称Namespace Element or Attribute
ChannelProcessingFilterhttp/intercept-url@requires-channel
SecurityContextPersistenceFilterhttp
ConcurrentSessionFiltersession-management/concurrency-control
HeaderWriterFilterhttp/headers
CsrfFilterhttp/csrf
LogoutFilterhttp/logout
XAuthenticationFilterhttp/X509
AbstractPerAuthenticatedProcessingFilterN/A
CasAuthenticationFilter N/A
UsernamePasswordAuthenticationFilterhttp/from-login
BasicAuthenticationFIlterhttp/from-basic
SecurityContextHolderAwareRequestFilterhttp/@servlet-api-provision
JaasAoilntegrationFilterhttp/@jaas-api-provision
RememberMeAuthenticationFilterhttp/remeber-me

AnonymousAuthenticationFilter

http/anonymous

SessionManagementFiltersession-management
ExceptionTranslationFilterhttp
FilterSecurityInterceptorhttp
SwitchUserFIlter

N/A

*****************过滤器的顺序从上到下

自定义过滤器方法:

public class BeforLoginFilter extends GenericFilterBean{

    public void doFilter(ServletRequest servletRequest,ServletResponse servletResponse,FilterChain filterChain) throws IOException ServletException{
        //调用Filter 链  .....
        filter.doFilter(servletRequest,servletResponse);
    }
            
}

配置自定义过滤器Filter在Spring Security 过滤链中的位置

protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/").permitAll()
                .antMatchers("/user/**").hasRole("USER")
                .and()
                .formLogin().loginPage("/login").defaultSuccessUrl("/user")
                .and()
                .logout().logoutUrl("/logout").logoutSuccessUrl("/login");

        // 在 UsernamePasswordAuthenticationFilter 前添加 BeforeLoginFilter
        http.addFilterBefore(new BeforeLoginFilter(), UsernamePasswordAuthenticationFilter.class);

        // 在 CsrfFilter 后添加 AfterCsrfFilter
        http.addFilterAfter(new AfterCsrfFilter(), CsrfFilter.class);
    }

HttpSecurity有三个常用方法来定义Filter 

  •    addFilterBefore(Filter filter,CLass<? extends Filter> beforeFilter) 在beforeFilter之前添加filter
  • addFilterAfter(Filter filter,Class<? extends Filter> afterFilter) 在 afterFilter 之后添加filter
  • addFilterAt(Filter filter, Class<? extends Filter> atFilter) 在atFilter相同的位置添加FIlter ,此Filter 不覆盖Filter
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值