SmsCodeAuthenticationProvider.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. *
  3. */
  4. package com.yihu.base.security.sms;
  5. import org.springframework.security.authentication.AuthenticationProvider;
  6. import org.springframework.security.authentication.InternalAuthenticationServiceException;
  7. import org.springframework.security.core.Authentication;
  8. import org.springframework.security.core.AuthenticationException;
  9. import org.springframework.security.core.userdetails.UserDetails;
  10. import org.springframework.security.core.userdetails.UserDetailsService;
  11. /**
  12. * @author zhailiang
  13. *
  14. */
  15. public class SmsCodeAuthenticationProvider implements AuthenticationProvider {
  16. private UserDetailsService userDetailsService;
  17. /*
  18. * (non-Javadoc)
  19. *
  20. * @see org.springframework.security.authentication.AuthenticationProvider#
  21. * authenticate(org.springframework.security.core.Authentication)
  22. */
  23. @Override
  24. public Authentication authenticate(Authentication authentication) throws AuthenticationException {
  25. SmsCodeAuthenticationToken authenticationToken = (SmsCodeAuthenticationToken) authentication;
  26. UserDetails user = userDetailsService.loadUserByUsername((String) authenticationToken.getPrincipal());
  27. if (user == null) {
  28. throw new InternalAuthenticationServiceException("无法获取用户信息");
  29. }
  30. SmsCodeAuthenticationToken authenticationResult = new SmsCodeAuthenticationToken(user, user.getAuthorities());
  31. authenticationResult.setDetails(authenticationToken.getDetails());
  32. return authenticationResult;
  33. }
  34. /*
  35. * (non-Javadoc)
  36. *
  37. * @see org.springframework.security.authentication.AuthenticationProvider#
  38. * supports(java.lang.Class)
  39. */
  40. @Override
  41. public boolean supports(Class<?> authentication) {
  42. return SmsCodeAuthenticationToken.class.isAssignableFrom(authentication);
  43. }
  44. public UserDetailsService getUserDetailsService() {
  45. return userDetailsService;
  46. }
  47. public void setUserDetailsService(UserDetailsService userDetailsService) {
  48. this.userDetailsService = userDetailsService;
  49. }
  50. }