token生成与过期机制

2019-05-20  本文已影响0人  在路上phper

上一节我们用php生成了一段api 每次我们请求地址都会生成一个token


image.png

api地址如上
如何做到让其不是每次请求都重新生成新的token呢 而是根据过期时间来使token过期后再重新生成 没达到过期时间这个值 就保持token不变
常见做法


image.png
首先思路是第一次请求地址时 生成token存在redis里 然后第二次请求地址时 先去redis里检查是否有设置的key 如果有 则从redis里取 没有在重新生成 (其实过期时间是变化的 否则始终是3600秒就没有意义了)
image.png

下面看下后端代码
RedisObject.php里面做些redis初始化工作


image.png
修改下token.php
image.png
加入了token的验证 存入redis判断
最后有个checktoken.php
检查请求是否带有token
image.png
接下来请求下token 看看有什么变化
image.png
可以发现过期时间发生了变化

并且刷新页面token并不变化
其实这个过期时间变化 是利用redis里面的ttl命令
用redis客户端测试下


image.png
我在redis里面设置了一个key 为name 并且设置过期时间为100s
可以获取key 并且还能用ttl命令查看剩余多少秒时间
image.png
image.png
其中token_bhc是我们程序中设置的key
可以用ttl token_bhc查看其剩余的时间
我们还可以把前几接学的请求最新新闻api加入token验证
image.png
请求出现如上 401
image.png
控制台里面status也可以看见
是因为我们在代码里面加入了token验证
image.png
我们把token带上请求
image.png
可以发现正常显示内容 而且请求status也显示200了
上一篇下一篇

猜你喜欢

热点阅读