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 chenweida
  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. //查找用户信息
  27. UserDetails user = userDetailsService.loadUserByUsername((String) authenticationToken.getPrincipal());
  28. if (user == null) {
  29. throw new InternalAuthenticationServiceException("无法获取用户信息");
  30. }
  31. SmsCodeAuthenticationToken authenticationResult = new SmsCodeAuthenticationToken(user, user.getAuthorities());
  32. authenticationResult.setDetails(authenticationToken.getDetails());
  33. return authenticationResult;
  34. }
  35. /*
  36. * (non-Javadoc)
  37. *
  38. * @see org.springframework.security.authentication.AuthenticationProvider#
  39. * supports(java.lang.Class)
  40. */
  41. @Override
  42. public boolean supports(Class<?> authentication) {
  43. return SmsCodeAuthenticationToken.class.isAssignableFrom(authentication);
  44. }
  45. public UserDetailsService getUserDetailsService() {
  46. return userDetailsService;
  47. }
  48. public void setUserDetailsService(UserDetailsService userDetailsService) {
  49. this.userDetailsService = userDetailsService;
  50. }
  51. }