ShiroUtils.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.ruoyi.common.utils.security;
  2. import org.apache.shiro.SecurityUtils;
  3. import org.apache.shiro.mgt.RealmSecurityManager;
  4. import org.apache.shiro.session.Session;
  5. import org.apache.shiro.subject.PrincipalCollection;
  6. import org.apache.shiro.subject.SimplePrincipalCollection;
  7. import org.apache.shiro.subject.Subject;
  8. import com.ruoyi.common.utils.StringUtils;
  9. import com.ruoyi.common.utils.bean.BeanUtils;
  10. import com.ruoyi.framework.shiro.realm.UserRealm;
  11. import com.ruoyi.project.system.user.domain.User;
  12. /**
  13. * shiro 工具类
  14. *
  15. * @author ruoyi
  16. */
  17. public class ShiroUtils
  18. {
  19. public static Subject getSubjct()
  20. {
  21. return SecurityUtils.getSubject();
  22. }
  23. public static Session getSession()
  24. {
  25. return SecurityUtils.getSubject().getSession();
  26. }
  27. public static void logout()
  28. {
  29. getSubjct().logout();
  30. }
  31. public static User getUser()
  32. {
  33. User user = null;
  34. Object obj = getSubjct().getPrincipal();
  35. if (StringUtils.isNotNull(obj))
  36. {
  37. user = new User();
  38. BeanUtils.copyBeanProp(user, obj);
  39. }
  40. return user;
  41. }
  42. public static void setUser(User user)
  43. {
  44. Subject subject = getSubjct();
  45. PrincipalCollection principalCollection = subject.getPrincipals();
  46. String realmName = principalCollection.getRealmNames().iterator().next();
  47. PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName);
  48. // 重新加载Principal
  49. subject.runAs(newPrincipalCollection);
  50. }
  51. public static void clearCachedAuthorizationInfo()
  52. {
  53. RealmSecurityManager rsm = (RealmSecurityManager) SecurityUtils.getSecurityManager();
  54. UserRealm realm = (UserRealm) rsm.getRealms().iterator().next();
  55. realm.clearCachedAuthorizationInfo();
  56. }
  57. public static Long getUserId()
  58. {
  59. return getUser().getUserId().longValue();
  60. }
  61. public static String getLoginName()
  62. {
  63. return getUser().getLoginName();
  64. }
  65. public static String getIp()
  66. {
  67. return getSubjct().getSession().getHost();
  68. }
  69. public static String getSessionId()
  70. {
  71. return String.valueOf(getSubjct().getSession().getId());
  72. }
  73. }