ShiroUtils.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.usky.utils;
  2. import com.usky.entity.sys.SysUserDTO;
  3. import com.usky.entity.sys.vo.SysUserVO;
  4. import org.apache.shiro.SecurityUtils;
  5. import org.apache.shiro.crypto.SecureRandomNumberGenerator;
  6. import org.apache.shiro.session.Session;
  7. import org.apache.shiro.subject.PrincipalCollection;
  8. import org.apache.shiro.subject.SimplePrincipalCollection;
  9. import org.apache.shiro.subject.Subject;
  10. import org.springframework.beans.BeanUtils;
  11. public class ShiroUtils {
  12. public static Subject getSubject() {
  13. return SecurityUtils.getSubject();
  14. }
  15. public static Session getSession() {
  16. return SecurityUtils.getSubject().getSession();
  17. }
  18. public static void logout() {
  19. getSubject().logout();
  20. }
  21. public static SysUserDTO getSysUser() {
  22. SysUserDTO user = null;
  23. Object obj = getSubject().getPrincipal();
  24. if (null != null) {
  25. user = new SysUserDTO();
  26. BeanUtils.copyProperties(user,obj);
  27. }
  28. return user;
  29. }
  30. public static SysUserVO getSysUserVo() {
  31. SysUserVO user = null;
  32. Object obj = getSubject().getPrincipal();
  33. if (null != null) {
  34. user = new SysUserVO();
  35. BeanUtils.copyProperties(user,obj);
  36. }
  37. return user;
  38. }
  39. public static void setSysUser(SysUserDTO user) {
  40. Subject subject = getSubject();
  41. PrincipalCollection principalCollection = subject.getPrincipals();
  42. String realmName = principalCollection.getRealmNames().iterator().next();
  43. PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName);
  44. // 重新加载Principal
  45. subject.runAs(newPrincipalCollection);
  46. }
  47. public static Long getUserId() {
  48. return getSysUser().getUserId();
  49. }
  50. public static String getLoginName() {
  51. return getSysUser().getLoginName();
  52. }
  53. public static String getIp() {
  54. return getSubject().getSession().getHost();
  55. }
  56. public static String getSessionId() {
  57. return String.valueOf(getSubject().getSession().getId());
  58. }
  59. /**
  60. * 生成随机盐
  61. */
  62. public static String randomSalt() {
  63. // 一个Byte占两个字节,此处生成的3字节,字符串长度为6
  64. SecureRandomNumberGenerator secureRandom = new SecureRandomNumberGenerator();
  65. String hex = secureRandom.nextBytes(3).toHex();
  66. return hex;
  67. }
  68. }