采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
看了代码中的token的用法,我的理解是在进行答案校验的时候,即在checkAnswer方法中,如果答案正确,那么就针对这个用户,把一个token存入缓存中。当该用户想改密码时,将传入的token跟缓存中的token进行比较,如果一致,则认为是该用户在操作。
我有一个小疑问,为什么要给token一个过期时间呢?
hi 同学,你的理解是对的,
token要过期时间的原因是,这次修改需要保证在一段时间内有效,过期就无效了。
因为token也可以被拦截~~再进一步的做法是使用token修改完之后,把token置成失效。
例如不加token,那么通过修改密码的接口 就可以随便改其他username的密码了。
那么加token,加了有效时间,起码在一段时间内,我保证自己的修改是有效且防止其他无效。
这在互联网上修改密码是一个很常用的做法,例如,忘记密码修改邮件里面给的链接,都会有一个提示,告诉你,这个修改密码的链接在10个小时之内有效,过期请重新获取该链接~
非常感谢!
geely老师,使用session来实现更改密码时候token的功能似乎也可行?比如:验证完问题和答案后,session.setAtrribute("CAN_CHANGE_PASSPWORD",true),下次调用修改密码接口,检测session的这个属性判断是否有权限。麻烦老师指点一下
是为了使用设置有效期而使用基于guava chache 的token吗?
登录后可查看更多问答,登录/注册
前后端分离,数据库接口设计,架构设计,功能开发,上线运维
10.4k 10
1.9k 22
1.5k 21
2.3k 21
2.1k 18