1、前两个绿色的第一个:过滤器主要是用来校验用户名和密码信息,第二个检查请求头中是否有basic信息。
2、exceptionTranslationFilter 主要是用来过滤在这个流程中,抛出的异常该进行什么处理
3、FilterSecurityInterceptor这个用来是读取你在config(Http)中所进行的配置

Security 可扩展的有

鉴权失败处理器

验证器

登录成功处理器

投票器

注意:投票器 vote 方法返回一个int值;-1代表反对,0代表弃权,1代表赞成;投票管理器收集投票结果,如果最终结果大于等于0则放行该请求。

自定义token处理过滤器

登出成功处理器

登录失败处理器

自定义UsernamePasswordAuthenticationFilter

我们直接继承 UsernamePasswordAuthenticationFilter ,然后在配置类中初始化这个过滤器,给这个过滤器添加登录失败处理器,登录成功处理器,登录管理器,登录请求 url 。

这里配置略微复杂,贴一下代码清单

初始化过滤器:


MyUsernamePasswordAuthenticationFilte getAuthenticationFilter(){
    MyUsernamePasswordAuthenticationFilter myUsernamePasswordAuthenticationFilter = new MyUsernamePasswordAuthenticationFilter(redisService);
    myUsernamePasswordAuthenticationFilter.setAuthenticationFailureHandler(new MyUrlAuthenticationFailureHandler());
    myUsernamePasswordAuthenticationFilter.setAuthenticationSuccessHandler(new MyAuthenticationSuccessHandler());
    myUsernamePasswordAuthenticationFilter.setFilterProcessesUrl("/sign_in");
    myUsernamePasswordAuthenticationFilter.setAuthenticationManager(getAuthenticationManager());
    return myUsernamePasswordAuthenticationFilter;
}

添加到配置:

http.addFilterAt(getAuthenticationFilter(),UsernamePasswordAuthenticationFilter.class);
03-05 21:55