SmsCodeAuthenticationProvider.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. * 短信登陆处理器
  13. * @author chenweida
  14. *
  15. */
  16. public class SmsCodeAuthenticationProvider implements AuthenticationProvider {
  17. private UserDetailsService userDetailsService;
  18. /*
  19. * (non-Javadoc)
  20. *
  21. * @see org.springframework.security.authentication.AuthenticationProvider#
  22. * authenticate(org.springframework.security.core.Authentication)
  23. */
  24. @Override
  25. public Authentication authenticate(Authentication authentication) throws AuthenticationException {
  26. SmsCodeAuthenticationToken authenticationToken = (SmsCodeAuthenticationToken) authentication;
  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. }