UserService.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.yihu.jw.config.security;
  2. import com.yihu.jw.base.user.BaseEmployDO;
  3. import com.yihu.jw.fegin.base.user.BaseRoleFeign;
  4. import com.yihu.jw.fegin.base.user.EmployFeign;
  5. import com.yihu.jw.restmodel.common.Envelop;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.security.core.authority.AuthorityUtils;
  8. import org.springframework.security.core.userdetails.User;
  9. import org.springframework.security.core.userdetails.UserDetails;
  10. import org.springframework.security.core.userdetails.UserDetailsService;
  11. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  12. import org.springframework.security.crypto.password.PasswordEncoder;
  13. import org.springframework.stereotype.Component;
  14. import org.springframework.util.StringUtils;
  15. import java.util.List;
  16. import java.util.Map;
  17. /**
  18. * Created by chenweida on 2017/11/29.
  19. * 处理用户校验
  20. */
  21. @Component
  22. public class UserService implements UserDetailsService {
  23. @Autowired
  24. private PasswordEncoder passwordEncoder;
  25. @Autowired
  26. private EmployFeign employFeign;
  27. @Autowired
  28. private BaseRoleFeign baseRoleFeign;
  29. // @Autowired
  30. // private EmployFeign employFeign;
  31. /**
  32. * 我们只需要把用户返回给spring-security 密码框架自己帮我们校验
  33. *
  34. * @param saasPhone
  35. * @return
  36. * @throws UsernameNotFoundException
  37. */
  38. @Override
  39. public UserDetails loadUserByUsername(String saasPhone) throws UsernameNotFoundException {
  40. //saasPhone=saas+phone
  41. //根据userName获取账户信息(手机号码)
  42. String[] sp = saasPhone.split(",");
  43. String phone = sp[0];
  44. String saasId = sp[1];
  45. Envelop envelop = employFeign.getEmployeeByPhoneAndSaasId(phone,saasId);
  46. if (envelop!=null&&!((Map)envelop.getObj()).isEmpty()) {
  47. Map baseEmployDO = (Map)envelop.getObj();
  48. Envelop roles = baseRoleFeign.getPhoneAndSaasId(phone,saasId);
  49. String authority ="";
  50. if(roles!=null&&!((List<Map>)roles.getObj()).isEmpty()){
  51. List<Map> list = (List<Map>)roles.getObj();
  52. for(Map one :list){
  53. authority+=","+one.get("code");
  54. }
  55. }
  56. return new User(saasPhone,
  57. passwordEncoder.encode(baseEmployDO.get("password")+""),
  58. true,
  59. true,
  60. true,
  61. true
  62. , AuthorityUtils.commaSeparatedStringToAuthorityList(authority.startsWith(",")?authority.substring(1):"") //权限
  63. );
  64. } else {
  65. throw new UsernameNotFoundException("用户不存在");
  66. }
  67. }
  68. }