添加token更新时间
This commit is contained in:
@@ -30,17 +30,19 @@ public class SysUserTokenEntity implements Serializable {
|
|||||||
//用户ID
|
//用户ID
|
||||||
@TableId(type = IdType.INPUT)
|
@TableId(type = IdType.INPUT)
|
||||||
private Long userId;
|
private Long userId;
|
||||||
//token
|
|
||||||
private String token;
|
|
||||||
//token
|
|
||||||
private String tokenMedical;
|
|
||||||
//token
|
|
||||||
private String tokenSociology;
|
|
||||||
//token
|
|
||||||
private String tokenAbroad;
|
|
||||||
//过期时间
|
//过期时间
|
||||||
private Date expireTime;
|
private Date expireTime;
|
||||||
|
//token
|
||||||
|
private String token;
|
||||||
//更新时间
|
//更新时间
|
||||||
private Date updateTime;
|
private Date updateTime;
|
||||||
|
//token
|
||||||
|
private String tokenMedical;
|
||||||
|
//更新时间
|
||||||
|
private Date medicalUpdateTime;
|
||||||
|
//token
|
||||||
|
private String tokenSociology;
|
||||||
|
//更新时间
|
||||||
|
private Date sociologyUpdateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,12 +35,12 @@ public class OAuth2Filter extends AuthenticatingFilter {
|
|||||||
protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) throws Exception {
|
protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) throws Exception {
|
||||||
//获取请求token
|
//获取请求token
|
||||||
String token = getRequestToken((HttpServletRequest) request);
|
String token = getRequestToken((HttpServletRequest) request);
|
||||||
|
//获取请求appType
|
||||||
|
String appType = getRequestAppType((HttpServletRequest) request);
|
||||||
if(StringUtils.isBlank(token)){
|
if(StringUtils.isBlank(token)){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return new OAuth2Token(token,appType);
|
||||||
return new OAuth2Token(token);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -97,14 +97,25 @@ public class OAuth2Filter extends AuthenticatingFilter {
|
|||||||
private String getRequestToken(HttpServletRequest httpRequest){
|
private String getRequestToken(HttpServletRequest httpRequest){
|
||||||
//从header中获取token
|
//从header中获取token
|
||||||
String token = httpRequest.getHeader("token");
|
String token = httpRequest.getHeader("token");
|
||||||
|
|
||||||
//如果header中不存在token,则从参数中获取token
|
//如果header中不存在token,则从参数中获取token
|
||||||
if(StringUtils.isBlank(token)){
|
if(StringUtils.isBlank(token)){
|
||||||
token = httpRequest.getParameter("token");
|
token = httpRequest.getParameter("token");
|
||||||
}
|
}
|
||||||
|
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取请求的appType
|
||||||
|
*/
|
||||||
|
private String getRequestAppType(HttpServletRequest httpRequest){
|
||||||
|
//从header中获取token
|
||||||
|
String appType = httpRequest.getHeader("appType");
|
||||||
|
//如果header中不存在token,则从参数中获取token
|
||||||
|
if(StringUtils.isBlank(appType)){
|
||||||
|
appType = httpRequest.getParameter("appType");
|
||||||
|
}
|
||||||
|
return appType==null?"":appType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ public class OAuth2Realm extends AuthorizingRealm {
|
|||||||
@Override
|
@Override
|
||||||
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
|
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
|
||||||
String accessToken = (String) token.getPrincipal();
|
String accessToken = (String) token.getPrincipal();
|
||||||
|
String appType = token.getCredentials().toString();
|
||||||
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo();
|
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo();
|
||||||
//根据accessToken,查询用户信息
|
//根据accessToken,查询用户信息
|
||||||
SysUserTokenEntity tokenEntity = shiroService.queryByToken(accessToken);
|
SysUserTokenEntity tokenEntity = shiroService.queryByToken(accessToken);
|
||||||
@@ -80,26 +81,27 @@ public class OAuth2Realm extends AuthorizingRealm {
|
|||||||
throw new IncorrectCredentialsException("token失效,请重新登录");
|
throw new IncorrectCredentialsException("token失效,请重新登录");
|
||||||
}
|
}
|
||||||
Long userId = tokenEntity.getUserId();
|
Long userId = tokenEntity.getUserId();
|
||||||
|
|
||||||
Long timeout = (tokenEntity.getExpireTime().getTime() - System.currentTimeMillis())/(1000 * 60 * 60);
|
Long timeout = (tokenEntity.getExpireTime().getTime() - System.currentTimeMillis())/(1000 * 60 * 60);
|
||||||
|
|
||||||
if (timeout <= 24*10){
|
if (timeout <= 24*10){
|
||||||
// token 续期
|
// token 续期
|
||||||
//当前时间
|
//当前时间
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
//过期时间
|
//过期时间
|
||||||
Date expireTime = new Date(now.getTime() + (3600 *24 * 10 * 1000) );
|
Date expireTime = new Date(now.getTime() + (3600 *24 * 10 * 1000) );
|
||||||
|
|
||||||
tokenEntity.setExpireTime(expireTime);
|
tokenEntity.setExpireTime(expireTime);
|
||||||
|
if ("".equals(appType)){
|
||||||
|
tokenEntity.setUpdateTime(now);
|
||||||
|
}else if ("medical".equals(appType)){
|
||||||
|
tokenEntity.setMedicalUpdateTime(now);
|
||||||
|
}else if ("sociology".equals(appType)){
|
||||||
|
tokenEntity.setSociologyUpdateTime(now);
|
||||||
|
}
|
||||||
sysUserTokenService.updateById(tokenEntity);
|
sysUserTokenService.updateById(tokenEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//判断前后台用户
|
//判断前后台用户
|
||||||
if (userId >= 10000) {
|
if (userId >= 10000) {
|
||||||
MyUserEntity myUserEntity = shiroService.queryAppUser(userId);
|
MyUserEntity myUserEntity = shiroService.queryAppUser(userId);
|
||||||
info = new SimpleAuthenticationInfo(myUserEntity, accessToken, getName());
|
info = new SimpleAuthenticationInfo(myUserEntity, appType, getName());
|
||||||
}else {
|
}else {
|
||||||
//查询用户信息
|
//查询用户信息
|
||||||
SysUserEntity user = shiroService.queryUser(tokenEntity.getUserId());
|
SysUserEntity user = shiroService.queryUser(tokenEntity.getUserId());
|
||||||
@@ -107,7 +109,7 @@ public class OAuth2Realm extends AuthorizingRealm {
|
|||||||
if(user.getStatus() == 0){
|
if(user.getStatus() == 0){
|
||||||
throw new LockedAccountException("账号已被锁定,请联系管理员");
|
throw new LockedAccountException("账号已被锁定,请联系管理员");
|
||||||
}
|
}
|
||||||
info = new SimpleAuthenticationInfo(user, accessToken, getName());
|
info = new SimpleAuthenticationInfo(user, appType, getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ import org.apache.shiro.authc.AuthenticationToken;
|
|||||||
*/
|
*/
|
||||||
public class OAuth2Token implements AuthenticationToken {
|
public class OAuth2Token implements AuthenticationToken {
|
||||||
private String token;
|
private String token;
|
||||||
|
private String appType;
|
||||||
|
|
||||||
public OAuth2Token(String token){
|
public OAuth2Token(String token,String appType){
|
||||||
this.token = token;
|
this.token = token;
|
||||||
|
this.appType = appType;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -30,6 +32,6 @@ public class OAuth2Token implements AuthenticationToken {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getCredentials() {
|
public Object getCredentials() {
|
||||||
return token;
|
return appType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,15 +46,15 @@ public class SysUserTokenServiceImpl extends ServiceImpl<SysUserTokenDao, SysUse
|
|||||||
String appType = request.getHeader("appType")==null?"":request.getHeader("appType");
|
String appType = request.getHeader("appType")==null?"":request.getHeader("appType");
|
||||||
if ("".equals(appType)){//同时修改 SysUserTokenDao.xml
|
if ("".equals(appType)){//同时修改 SysUserTokenDao.xml
|
||||||
tokenEntity.setToken(token);
|
tokenEntity.setToken(token);
|
||||||
|
tokenEntity.setUpdateTime(now);
|
||||||
}else if ("medical".equals(appType)){
|
}else if ("medical".equals(appType)){
|
||||||
tokenEntity.setTokenMedical(token);
|
tokenEntity.setTokenMedical(token);
|
||||||
|
tokenEntity.setMedicalUpdateTime(now);
|
||||||
}else if ("sociology".equals(appType)){
|
}else if ("sociology".equals(appType)){
|
||||||
tokenEntity.setTokenSociology(token);
|
tokenEntity.setTokenSociology(token);
|
||||||
}else if ("abroad".equals(appType)){
|
tokenEntity.setSociologyUpdateTime(now);
|
||||||
tokenEntity.setTokenAbroad(token);
|
|
||||||
}
|
}
|
||||||
tokenEntity.setUserId(userId);
|
tokenEntity.setUserId(userId);
|
||||||
tokenEntity.setUpdateTime(now);
|
|
||||||
tokenEntity.setExpireTime(expireTime);
|
tokenEntity.setExpireTime(expireTime);
|
||||||
this.saveOrUpdate(tokenEntity);
|
this.saveOrUpdate(tokenEntity);
|
||||||
R r = R.ok().put("token", token).put("expire", EXPIRE);
|
R r = R.ok().put("token", token).put("expire", EXPIRE);
|
||||||
|
|||||||
@@ -4,6 +4,6 @@
|
|||||||
<mapper namespace="com.peanut.modules.sys.dao.SysUserTokenDao">
|
<mapper namespace="com.peanut.modules.sys.dao.SysUserTokenDao">
|
||||||
|
|
||||||
<select id="queryByToken" resultType="com.peanut.modules.sys.entity.SysUserTokenEntity">
|
<select id="queryByToken" resultType="com.peanut.modules.sys.entity.SysUserTokenEntity">
|
||||||
select * from sys_user_token where (token = #{value} or token_medical = #{value} or token_sociology = #{value} or token_abroad = #{value})
|
select * from sys_user_token where (token = #{value} or token_medical = #{value} or token_sociology = #{value})
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user