请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

想到一个问题,关于登录时把token存入cache,旧的token要怎么处理

每次登陆都会生成一个新的token,token是随机的,那么把token作为key存入cache,比如用户第一次登录会生成一个缓存,第二次登录会生成一个新的缓存,2个cache的key不一样,那么第二个缓存就不能覆盖第一个,这样的话第二个有效,第一个失效了,那么第一个该怎么处理,总不能文件夹里留很多失效无用的缓存吧。因为token每次都是随机的,下一次的操作也无法做删除或覆盖操作

我也验证了:这个问题确实有:

https://img1.sycdn.imooc.com/szimg//5950783900014f4909880200.jpg

https://img1.sycdn.imooc.com/szimg//59507853000166e603870137.jpg

token就是解决一个安全性的问题,课程token有效期是7200秒,实际中一般不会让用户频繁登录,基本上是一周或者一个月,如果一个用户同时存在几个token,获取新token时无法让旧token失效,那么只要任何一个token被人截取,程序都不会安全,


正在回答

2回答

小程序中有控制,不会频繁登录只有在令牌失效的情况下才会请求登录。第二,用户令牌丢失后有效期只有7200秒。而且,任何的程序都无法解决令牌丢失的问题,只能通过减小有效期来减小风险。你设置成一个月,这才是真正的危险。我们程序里设置的7200秒,但是用户根本感觉不到登录的过程,不知道“让用户频繁登录”如何说起。从来没有哪个应用设置成1个月有效期,都是7200秒左右,可以通过刷新令牌,refresh token来解决,但绝对不会简单的设置成一个月。关于文件下面无效缓存的问题,这个就算是第一个有效期失效,那么文件缓存一样会存在,只不过是失效了。你可以更换成redis来解决。

0 回复 有任何疑惑可以回复我~
  • 提问者 你的名字很好听 #1
    可能我开发的是app,和小程序有些出入。按照老师的意思,就是:第一次获取令牌之后做cache缓存,如果用户请求,后台通过token去拿取缓存,判断,如果在7200有效期内,就通过,不在7200秒内,就删除这个token的缓存,在生成一个新的,这样可以有效解决cache里存在无效缓存的问题,只是前端令牌丢失的不能删除。因为我做的是app,会有手机号登录,三方登录的登录方式,所以会说到频繁登录,看来小程序对于令牌的处理和app有些差异。
    回复 有任何疑惑可以回复我~ 2017-06-26 13:16:32
  • 提问者 你的名字很好听 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-06-26 15:04:23
7七月 2017-06-26 12:07:23

想让第一个令牌失效,调用TP5的删除缓存即可。但依然无法解决令牌丢失的问题,新的令牌就不会被截取吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 你的名字很好听 #1
    嗯,如果手机端缓存的令牌丢失,就不能删除掉服务器之前缓存的token,因为cache好像只能通过key找value,token丢失就是丢了cache的key, 就没办法使用TP5的删除缓存
    回复 有任何疑惑可以回复我~ 2017-06-26 12:58:14
  • 7七月 回复 提问者 你的名字很好听 #2
    两个小时就过期了。。。不删除也没什么吧。。。
    回复 有任何疑惑可以回复我~ 2017-06-26 16:50:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信