|
@@ -1,5 +1,6 @@
|
|
package com.platform.shiro;
|
|
package com.platform.shiro;
|
|
|
|
|
|
|
|
+import com.auth0.jwt.JWT;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.platform.cache.J2CacheUtils;
|
|
import com.platform.cache.J2CacheUtils;
|
|
import com.platform.dao.SysMenuDao;
|
|
import com.platform.dao.SysMenuDao;
|
|
@@ -7,9 +8,13 @@ import com.platform.dao.SysUserDao;
|
|
import com.platform.dao.SysUserRoleDao;
|
|
import com.platform.dao.SysUserRoleDao;
|
|
import com.platform.entity.SysMenuEntity;
|
|
import com.platform.entity.SysMenuEntity;
|
|
import com.platform.entity.SysUserEntity;
|
|
import com.platform.entity.SysUserEntity;
|
|
|
|
+import com.platform.shiro.jwt.JwtToken;
|
|
import com.platform.service.impl.ZhiHouseService;
|
|
import com.platform.service.impl.ZhiHouseService;
|
|
import com.platform.utils.Constant;
|
|
import com.platform.utils.Constant;
|
|
|
|
+import com.platform.utils.JwtUtil;
|
|
import com.platform.vos.CurrentUserLoginVo;
|
|
import com.platform.vos.CurrentUserLoginVo;
|
|
|
|
+import io.jsonwebtoken.Claims;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.shiro.SecurityUtils;
|
|
import org.apache.shiro.SecurityUtils;
|
|
import org.apache.shiro.authc.*;
|
|
import org.apache.shiro.authc.*;
|
|
@@ -31,6 +36,7 @@ import java.util.*;
|
|
* @author lipengjun
|
|
* @author lipengjun
|
|
* @date 2017年11月19日 上午9:49:19
|
|
* @date 2017年11月19日 上午9:49:19
|
|
*/
|
|
*/
|
|
|
|
+@Slf4j
|
|
public class UserRealm extends AuthorizingRealm {
|
|
public class UserRealm extends AuthorizingRealm {
|
|
@Autowired
|
|
@Autowired
|
|
private SysUserDao sysUserDao;
|
|
private SysUserDao sysUserDao;
|
|
@@ -43,25 +49,34 @@ public class UserRealm extends AuthorizingRealm {
|
|
@Autowired
|
|
@Autowired
|
|
private ZhiHouseService zhiHouseService;
|
|
private ZhiHouseService zhiHouseService;
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public boolean supports(AuthenticationToken token) {
|
|
|
|
+ return token instanceof JwtToken;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 授权(验证权限时调用)
|
|
* 授权(验证权限时调用)
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
|
|
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
|
|
- SysUserEntity user = (SysUserEntity) principals.getPrimaryPrincipal();
|
|
|
|
- Long userId = user.getUserId();
|
|
|
|
|
|
+
|
|
|
|
+// Claims claims = JwtUtil.parseJWT(principals.toString());
|
|
|
|
+// Long userId = Long.valueOf(claims.get("id", String.class));
|
|
|
|
+
|
|
|
|
+ SysUserEntity user = (SysUserEntity) principals.getPrimaryPrincipal();
|
|
|
|
|
|
List<String> permsList;
|
|
List<String> permsList;
|
|
|
|
|
|
//系统管理员,拥有最高权限
|
|
//系统管理员,拥有最高权限
|
|
- if (userId == Constant.SUPER_ADMIN) {
|
|
|
|
|
|
+ if (user.getUserId() == Constant.SUPER_ADMIN) {
|
|
List<SysMenuEntity> menuList = sysMenuDao.queryList(new HashMap<>());
|
|
List<SysMenuEntity> menuList = sysMenuDao.queryList(new HashMap<>());
|
|
permsList = new ArrayList<>(menuList.size());
|
|
permsList = new ArrayList<>(menuList.size());
|
|
for (SysMenuEntity menu : menuList) {
|
|
for (SysMenuEntity menu : menuList) {
|
|
permsList.add(menu.getPerms());
|
|
permsList.add(menu.getPerms());
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- permsList = sysUserDao.queryAllPerms(userId);
|
|
|
|
|
|
+ permsList = sysUserDao.queryAllPerms(user.getUserId());
|
|
}
|
|
}
|
|
//用户权限列表
|
|
//用户权限列表
|
|
Set<String> permsSet = new HashSet<String>();
|
|
Set<String> permsSet = new HashSet<String>();
|
|
@@ -84,12 +99,15 @@ public class UserRealm extends AuthorizingRealm {
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
protected AuthenticationInfo doGetAuthenticationInfo(
|
|
protected AuthenticationInfo doGetAuthenticationInfo(
|
|
- AuthenticationToken token) throws AuthenticationException {
|
|
|
|
- String username = (String) token.getPrincipal();
|
|
|
|
- String password = new String((char[]) token.getCredentials());
|
|
|
|
|
|
+ AuthenticationToken auth) throws AuthenticationException {
|
|
|
|
+ String token = (String) auth.getCredentials();
|
|
|
|
+ Claims claims = JwtUtil.parseJWT(token);
|
|
|
|
+ String userId = claims.get("id", String.class);
|
|
|
|
+ String username = claims.get("username", String.class);
|
|
|
|
+ String password = claims.get("password", String.class);
|
|
|
|
|
|
//查询用户信息
|
|
//查询用户信息
|
|
- SysUserEntity userEntity = sysUserDao.queryByUserMobile(username);
|
|
|
|
|
|
+ SysUserEntity userEntity = sysUserDao.queryObject(userId);
|
|
|
|
|
|
//账号不存在
|
|
//账号不存在
|
|
if (userEntity == null) {
|
|
if (userEntity == null) {
|
|
@@ -135,7 +153,7 @@ public class UserRealm extends AuthorizingRealm {
|
|
}
|
|
}
|
|
J2CacheUtils.put(Constant.PERMS_LIST + user.getUserId(), permsList);
|
|
J2CacheUtils.put(Constant.PERMS_LIST + user.getUserId(), permsList);
|
|
|
|
|
|
- SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, password, getName());
|
|
|
|
|
|
+ SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, token, getName());
|
|
return info;
|
|
return info;
|
|
}
|
|
}
|
|
|
|
|