ShiroUtils.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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.bean.BeanUtils;
  9. import com.ruoyi.framework.shiro.realm.UserRealm;
  10. import com.ruoyi.project.system.user.domain.User;
  11. /**
  12. * shiro 工具类
  13. *
  14. * @author ruoyi
  15. */
  16. public class ShiroUtils
  17. {
  18. public static Subject getSubjct()
  19. {
  20. return SecurityUtils.getSubject();
  21. }
  22. public static Session getSession()
  23. {
  24. return SecurityUtils.getSubject().getSession();
  25. }
  26. public static void logout()
  27. {
  28. getSubjct().logout();
  29. }
  30. public static User getUser()
  31. {
  32. User user = new User();
  33. BeanUtils.copyBeanProp(user, getSubjct().getPrincipal());
  34. return user;
  35. }
  36. public static void setUser(User user)
  37. {
  38. Subject subject = getSubjct();
  39. PrincipalCollection principalCollection = subject.getPrincipals();
  40. String realmName = principalCollection.getRealmNames().iterator().next();
  41. PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName);
  42. // 重新加载Principal
  43. subject.runAs(newPrincipalCollection);
  44. }
  45. public static void clearCachedAuthorizationInfo()
  46. {
  47. RealmSecurityManager rsm = (RealmSecurityManager) SecurityUtils.getSecurityManager();
  48. UserRealm realm = (UserRealm) rsm.getRealms().iterator().next();
  49. realm.clearCachedAuthorizationInfo();
  50. }
  51. public static Long getUserId()
  52. {
  53. return getUser().getUserId().longValue();
  54. }
  55. public static String getLoginName()
  56. {
  57. return getUser().getLoginName();
  58. }
  59. public static String getIp()
  60. {
  61. return getSubjct().getSession().getHost();
  62. }
  63. public static String getSessionId()
  64. {
  65. return String.valueOf(getSubjct().getSession().getId());
  66. }
  67. }