CasUserRealm.java
2.2 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
package com.framework.shiro;
import java.util.List;
import java.util.Set;
import javax.annotation.Resource;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.cas.CasRealm;
import org.apache.shiro.subject.PrincipalCollection;
import com.agent.entity.system.PermissionEntity;
import com.agent.entity.system.UserEntity;
import com.agent.service.system.RoleService;
import com.agent.service.system.UserService;
import com.google.common.collect.Sets;
public class CasUserRealm extends CasRealm{
@Resource
private UserService userService;
@Resource
private RoleService roleService;
/**
* 返回当前subject的授权信息
* 交由shiro的Authorizer鉴权
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
String loginAccount = (String) principals.getPrimaryPrincipal();
UserEntity user = userService.findByLoginaccount(loginAccount);
Set<String> roles = Sets.newHashSet(user.getRole().getId().toString());
authorizationInfo.setRoles(roles);
System.out.println("This is waht? That I wang to!");
//查询权限字符串
List<PermissionEntity> list = roleService.findAllPermisstionByRole(user.getRole());
Set<String> permisstions = Sets.newTreeSet();
for(PermissionEntity permisstion:list) {
permisstions.add(permisstion.getMenu().getPermission());
}
authorizationInfo.setStringPermissions(permisstions);
return authorizationInfo;
}
/**
* 1、CAS认证 ,验证用户身份
* 2、将用户基本信息设置到会话中
*/
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) {
AuthenticationInfo authc = super.doGetAuthenticationInfo(token);
String account = (String) authc.getPrincipals().getPrimaryPrincipal();
UserEntity user = userService.findByLoginaccount(account);
SecurityUtils.getSubject().getSession().setAttribute("user", user);
return authc;
}
}