基本思路
登录时通过redis查询所有当前在线的同id账户key,然后移除并写入新的token。
具体实现
1.common.constant.Constants 添加:
/**
* 用户id与redis key链接符
*/
public static final String LOGIN_CONNEECTOR = "|";
2.framework.web.service.createToken :
public String createToken(LoginUser loginUser)
{
//String token = IdUtils.fastUUID();
//改写token规则
String token = String.valueOf(loginUser.getUserId())+Constants.LOGIN_CONNEECTOR+IdUtils.fastUUID();
//遍历删除
Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY+String.valueOf(loginUser.getUserId())+Constants.LOGIN_CONNEECTOR + "*");
for (String string : keys) {
redisCache.deleteObject(string);
}
loginUser.setToken(token);
setUserAgent(loginUser);
refreshToken(loginUser);
Map<String, Object> claims = new HashMap<>();
claims.put(Constants.LOGIN_USER_KEY , token);
return createToken(claims);
}
最后效果放图: