SmsCodeAuthenticationSecurityConfig.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. *
  3. */
  4. package com.yihu.base.security.sms;
  5. import com.yihu.base.security.sms.filter.SmsvalidateCodeFilter;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.security.authentication.AuthenticationManager;
  8. import org.springframework.security.config.annotation.SecurityConfigurerAdapter;
  9. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  10. import org.springframework.security.core.userdetails.UserDetailsService;
  11. import org.springframework.security.web.DefaultSecurityFilterChain;
  12. import org.springframework.security.web.authentication.AuthenticationFailureHandler;
  13. import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
  14. import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
  15. import org.springframework.stereotype.Component;
  16. /**
  17. * @author chenweida
  18. */
  19. @Component
  20. public class SmsCodeAuthenticationSecurityConfig extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {
  21. @Autowired
  22. private AuthenticationSuccessHandler authenticationSuccessHandler;
  23. @Autowired
  24. private AuthenticationFailureHandler authenticationFailureHandler;
  25. @Autowired
  26. private UserDetailsService userDetailsService;
  27. @Autowired
  28. private SmsvalidateCodeFilter smsvalidateCodeFilter;
  29. @Override
  30. public void configure(HttpSecurity http) throws Exception {
  31. //短信验证码过滤器
  32. SmsCodeAuthenticationFilter smsCodeAuthenticationFilter = new SmsCodeAuthenticationFilter();
  33. smsCodeAuthenticationFilter.setAuthenticationManager(http.getSharedObject(AuthenticationManager.class));
  34. smsCodeAuthenticationFilter.setAuthenticationSuccessHandler(authenticationSuccessHandler);
  35. smsCodeAuthenticationFilter.setAuthenticationFailureHandler(authenticationFailureHandler);
  36. SmsCodeAuthenticationProvider smsCodeAuthenticationProvider = new SmsCodeAuthenticationProvider();
  37. smsCodeAuthenticationProvider.setUserDetailsService(userDetailsService);
  38. http.authenticationProvider(smsCodeAuthenticationProvider)
  39. .addFilterAfter(smsCodeAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)//在账号密码验证过滤器之后添加短信验证码过滤器
  40. .addFilterBefore(smsvalidateCodeFilter,SmsCodeAuthenticationFilter.class); //添加短信验证码登陆过滤器
  41. }
  42. }