业务需求:用户登录后,再新的设备上又登录一次(提示用户是否继续登录)

需求: 用户点击"取消"则当前登录取消,点击"确认"则把退出上个设备的登录,并在当前设备登录

image

思路

在login时判断该用户是否有token

有:表示已经登录过了,回状态码和信息给 前端"用户进行二次登录"

无:表示用户第一次登录

        //用户进行新设备登录,判断当前用户token是否存在redis
            Boolean repeat = redisUtil.hasKey("token_" + userAccount.getAccount());
            if (repeat) {
                return new ResponseData<>(RspCodeMsgEnum.LOGIN_REPEAT, "用户使用新设备登录");
            }

新建接口:二次登录接口(在新设备上点击确实登录时调用)

逻辑:

1、下线上次的登录状态(清楚该用户的token)

2、拿到当前用户的信息调登录接口 继续登录

  @Override
    public ResponseData<LoginVO> loginRepeat(LoginParam param) {
        log.info("用户进新设备登录");
        if (!"admin".equals(param.getAccount())) {
            String account = param.getAccount();
            //删除第一次登录时的token
            redisUtil.del("token_" + account);
            //执行登录
            log.info("旧token已删除,开始重新登录");
            return login(param);
        } else {
            return new ResponseData<>(RspCodeMsgEnum.FAIL);
        }

    }

完成

效果是用户第二次登录时,把第一次登录状态清空。

posted @ 2024-03-13 16:12  Only_Aptx-4869  阅读(129)  评论(0)    收藏  举报