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