5行代码实现若依框架挤下线功能,token失效,jwt(分离版)

该博客介绍了如何在用户登录时通过Redis管理与更新同ID账户的Token。首先定义了一个用户ID与Redis key的连接符,然后在创建新Token时,先删除旧的Key,再存储新的Token。这一过程确保了登录状态的一致性和安全性。最后,文中展示了实现这一功能后的效果。
摘要由CSDN通过智能技术生成

基本思路

登录时通过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);
    }

最后效果放图:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值