spring security oauth2 实现账户登录互踢

611 阅读1分钟
  • 需求:账户登录互踢(同一账号只能一个用户登录使用)
  • 原理:spring security oauth2 实现账户登录互踢-账号登录时,获取token,同时将用户名和对应token保存,每次登陆时,将该用户名的token从redis移除即可;
  • 代码实现
/** 账号登录互踢
 *
 * 1.删除该账号上一次token
 * 2.记录本次对应token
 *
 */
//获取登录用户
String username = (String) response.get("username");

//获取token
String token = (String) response.get("access_token");

if (StringUtils.isNotBlank(username)){
    //获取该用户上一次登录的token
    String lastToken = (String) redisUtils.get(TOKEN_USER_KEY + username);
    boolean tokenFlag = redisUtils.hasKey("access:" + lastToken);
    if (tokenFlag){
       //清除token
       oAuthClient.removeToken(lastToken); 
    }
    //每次返回token前 ,记录用户的token
    redisUtils.set(TOKEN_USER_KEY + username,token);
}