登录处理token错误

来源:3-16 第三章作业1

认真努力小封同学

2022-02-15

在UserService的loginForDts方法处理token中,用户重新登录应该删除老的token,但是不能把刚生成的refreshToken当作条件,不然怎么都删不了老的那一条token记录,导致单个user拥有多个token 应该根据userId删除token

		final String accessToken = TokenUtil.generateToken(userId);
        final String refreshToken = TokenUtil.generateRefreshToken(userId);
		//保存refresh token到数据库
        this.userDao.deleteRefreshToken(refreshToken, userId);
        this.userDao.addRefreshToken(refreshToken, userId, new Date());

另外还有一个提问:用户退出这一功能,我看老师的操作仅仅是把refreshToken从db中删除,那accessToken只要没过期 token不是依然有效吗?只是无法通过refreshToken请求到新的accessToken而已。同时退出的话也只要userId就足够了吧?根据id删除token即可

写回答

1回答

HELLOSTAR

2022-02-18

这个问题应该是当时录制课程的时候忘了同步判断双token的逻辑了,回头我把这里补充一下。正常流程是如果用户退出登陆了,那么下次他再持有accesstoken和refreshtoken的时候会根据这两个参数判断数据库是否有对应的数据,如果没有的话就无法请求到相关资源,为你点赞!

0
1
认真努力小封同学
也就是说即使accessToken正确也要判定refreshToken是存在的这样么
2022-02-18
共1条回复

SpringBoot 2.x 实战仿B站高性能后端项目

还原高性能项目开发全流程,掌握视频业务核心功能与技术

755 学习 · 190 问题

查看课程