短信验证码登陆怎么使用remember-me功能?

来源:4-10 短信验证码接口开发

慕村6135595

2020-02-06

添加短信登陆功能后,怎么让短信登陆支持remember-me?

写回答

2回答

hi小天

2021-06-19

@Component
public class SmsCodeSecurityConfigurer extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {

    @Autowired
    private AuthenticationSuccessHandler authenticationSuccessHandler;

    @Autowired
    private AuthenticationFailureHandler authenticationFailureHandler;

    @Autowired
    private UserDetailsService userDetailsService;

    @Override
    public void configure(HttpSecurity http) throws Exception {
        SmsAuthenticationFilter smsAuthenticationFilter = new SmsAuthenticationFilter();
        smsAuthenticationFilter.setAuthenticationManager(http.getSharedObject(AuthenticationManager.class));
        smsAuthenticationFilter.setAuthenticationFailureHandler(authenticationFailureHandler);
        smsAuthenticationFilter.setAuthenticationSuccessHandler(authenticationSuccessHandler);

        RememberMeServices rememberMeServices = http.getSharedObject(RememberMeServices.class);
        if (rememberMeServices != null) {
            smsAuthenticationFilter.setRememberMeServices(rememberMeServices);
        }

        SmsCodeAuthenticationProvider smsAuthenticationProvider = new SmsCodeAuthenticationProvider();
        smsAuthenticationProvider.setUserDetailsService(userDetailsService);

        http.authenticationProvider(smsAuthenticationProvider)
//                 smsAuthenticationFilter 在 UsernamePasswordAuthenticationFilter 之前加入到过滤器链中, 通过order的指定实现
//    filter的前后顺序,     smsAuthenticationFilter前面,       UsernamePasswordAuthenticationFilter  后面
                .addFilterAfter(smsAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
    }
}



最重要是这段;  

RememberMeServices rememberMeServices = http.getSharedObject(RememberMeServices.class);


0
0

JoJo

2020-02-17

一般不建议这么做,如果要支持的话和普通的原理一样,多传一个remember-me参数就可以了

0
0

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全

2662 学习 · 1561 问题

查看课程