token 怎么设置过期时间

我想设置 token 的过期时间为24小时,于是我在 token 里加入时间字符串,比如2018-09-06:

$token=md5(date("y-m-d", time()) . $model . $path . "&#^@*……");

可是这样有个问题,当我2018-09-06晚上11点59登录系统,过了一分钟就是2018-09-07,也就是这次登录才一分钟 token 就失效了,这肯定不符合要求,所以是不是我对 token 理解有问题?token 失效时间怎么设置才正确?

还有当前端调用后端接口时,前端是通过什么方式获得 token 的?我理解是后端生成 token 后把token写进cookie里,然后前端直接调用cookie里的数据,可是这样的话是不是每次前端调用接口前都要先调用下后端存token的那个文件?

阅读 16.4k
2 个回答

这个是你代码的问题

一般来说Token还是需要保存的
从你这个代码来看,我推测你是不想保存token,token也不会被中途取消,只想让token到时过期,

那你可以把Token的到期时间直接写在Token明文里,到时候直接拼接就好了。

比如你的Date 是2018-9-6,那你可以直接 md5("2018-9-6 14:17:52".$model.$path."^@*……")."$$2018-9-6 14:17:52"

那么你的token Hash出来应该是形如efe6398127928f1b2e9ef3207fb82663$$2018-9-6 14:17:52,验证的时候,直接把后面的日期取出来再做一遍md5即可。
相当于是用$model.$path."&#^@*……"2018-9-6 14:17:52这个时间进行了一个签名

我觉得token是用户登录时根据用户登录IP加上登录时间以及一些随机字符和用户信息综合生成的加密字符串。登录成功后保存在Session会话中,随着会话的结束而失效。同时也可以对用户传入的token进行安全验证。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题