SecurityUtils.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.genersoft.iot.vmp.conf.security;
  2. import com.genersoft.iot.vmp.conf.security.dto.LoginUser;
  3. import org.springframework.security.authentication.AuthenticationManager;
  4. import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  5. import org.springframework.security.core.Authentication;
  6. import org.springframework.security.core.context.SecurityContext;
  7. import org.springframework.security.core.context.SecurityContextHolder;
  8. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  9. import javax.security.sasl.AuthenticationException;
  10. public class SecurityUtils {
  11. /**
  12. * 描述根据账号密码进行调用security进行认证授权 主动调
  13. * 用AuthenticationManager的authenticate方法实现
  14. * 授权成功后将用户信息存入SecurityContext当中
  15. * @param username 用户名
  16. * @param password 密码
  17. * @param authenticationManager 认证授权管理器,
  18. * @see AuthenticationManager
  19. * @return UserInfo 用户信息
  20. */
  21. public static LoginUser login(String username, String password, AuthenticationManager authenticationManager) throws AuthenticationException {
  22. //使用security框架自带的验证token生成器 也可以自定义。
  23. UsernamePasswordAuthenticationToken token =new UsernamePasswordAuthenticationToken(username,password);
  24. Authentication authenticate = authenticationManager.authenticate(token);
  25. SecurityContextHolder.getContext().setAuthentication(authenticate);
  26. LoginUser user = (LoginUser) authenticate.getPrincipal();
  27. return user;
  28. }
  29. /**
  30. * 获取当前登录的所有认证信息
  31. * @return
  32. */
  33. public static Authentication getAuthentication(){
  34. SecurityContext context = SecurityContextHolder.getContext();
  35. return context.getAuthentication();
  36. }
  37. /**
  38. * 获取当前登录用户信息
  39. * @return
  40. */
  41. public static LoginUser getUserInfo(){
  42. Authentication authentication = getAuthentication();
  43. if(authentication!=null){
  44. Object principal = authentication.getPrincipal();
  45. if(principal!=null){
  46. LoginUser user = (LoginUser) authentication.getPrincipal();
  47. return user;
  48. }
  49. }
  50. return null;
  51. }
  52. /**
  53. * 获取当前登录用户ID
  54. * @return
  55. */
  56. public static int getUserId(){
  57. LoginUser user = getUserInfo();
  58. return user.getId();
  59. }
  60. /**
  61. * 生成BCryptPasswordEncoder密码
  62. *
  63. * @param password 密码
  64. * @return 加密字符串
  65. */
  66. public static String encryptPassword(String password) {
  67. BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
  68. return passwordEncoder.encode(password);
  69. }
  70. }