转载

16.SpringSecurity-短信登录配置及重构

内容

1.短信登录配置及重构

  • 短信登录一部分配置主要是配置以下3个组件:

16.SpringSecurity-短信登录配置及重构

主要是配置:SmsCodeAuthenticationFilter和SmsCodeAuthenticationProvider;

SmsCodeAuthenticationToken是封装数据,是不用配置的。

  • 另一部分配置是短信过滤器配置:SmsCodeFilter

1.1 过滤器链上组件配置

我们在spring-security-core项目创建一个SmsCodeAuthenticationSecurityConfig;我们没有向之前WebSecurityConfig一样配置在spring-security-web里面;原因是因为:短信校验模块这段配置后面我们既要在web浏览器端使用还要在App端使用。所以我们单独提出一个类。

@Configuration
public class SmsCodeAuthenticationSecurityConfig extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {

    @Autowired
    private AuthenticationSuccessHandler myAuthenticationSuccessHandler;

    @Autowired
    private AuthenticationFailureHandler myAuthenticationFailureHandler;

    @Autowired
    private UserDetailsService myUserDetailsService;

    @Override
    public void configure(HttpSecurity http) throws Exception {
      /*  super.configure(builder);*/
        //1.按照过滤器链路:配置SmsCodeAutnenticationFilter-->配置让其加入到AuthenticationManager中  配置其成功处理  失败处理的Handler
        SmsCodeAuthenticationFilter smsCodeAuthenticationFilter = new SmsCodeAuthenticationFilter();
        smsCodeAuthenticationFilter.setAuthenticationManager(http.getSharedObject(AuthenticationManager.class));
        smsCodeAuthenticationFilter.setAuthenticationSuccessHandler(myAuthenticationSuccessHandler);
        smsCodeAuthenticationFilter.setAuthenticationFailureHandler(myAuthenticationFailureHandler);

        //2.配置SmsCodeAuthenticationProvider-->添加UserDetailService
        SmsCodeAuthenticationProvider smsCodeAuthenticationProvider = new SmsCodeAuthenticationProvider();
        smsCodeAuthenticationProvider.setUserDetailsService(myUserDetailsService);

        //3.http配置:配置SmsCodeAutnenticationFilter执行位置--->在UsernamePasswordAuthenticationFilter之后
        http.authenticationProvider(smsCodeAuthenticationProvider)
                .addFilterAfter(smsCodeAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);

    }
}

1.2 验证码过滤器配置

在Spring-security-web里面配置:SmsCodeFilter在UsernamePasswordFilter前面

16.SpringSecurity-短信登录配置及重构

1.3 SmsCodeAuthenticationSecurityConfig配置到WebSecurityConfig

我们把spring-security-core里面的SmsCodeAuthenticationSecurityConfig也配置导入到spring-security-web下面的:WebSecurityConfig配置中:

16.SpringSecurity-短信登录配置及重构

1.4 测试查看效果

http://127.0.0.1 :8088/login.html

16.SpringSecurity-短信登录配置及重构

原文  https://segmentfault.com/a/1190000022050892
正文到此结束
Loading...