鍍金池/ 問答/Java  PHP/ token 怎么設置過期時間

token 怎么設置過期時間

我想設置 token 的過期時間為24小時,于是我在 token 里加入時間字符串,比如2018-09-06:

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

可是這樣有個問題,當我2018-09-06晚上11點59登錄系統(tǒng),過了一分鐘就是2018-09-07,也就是這次登錄才一分鐘 token 就失效了,這肯定不符合要求,所以是不是我對 token 理解有問題?token 失效時間怎么設置才正確?

還有當前端調(diào)用后端接口時,前端是通過什么方式獲得 token 的?我理解是后端生成 token 后把token寫進cookie里,然后前端直接調(diào)用cookie里的數(shù)據(jù),可是這樣的話是不是每次前端調(diào)用接口前都要先調(diào)用下后端存token的那個文件?

回答
編輯回答
撿肥皂

我覺得token是用戶登錄時根據(jù)用戶登錄IP加上登錄時間以及一些隨機字符和用戶信息綜合生成的加密字符串。登錄成功后保存在Session會話中,隨著會話的結束而失效。同時也可以對用戶傳入的token進行安全驗證。

2018年5月7日 05:42
編輯回答
葬憶

這個是你代碼的問題

一般來說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這個時間進行了一個簽名

2018年4月16日 06:55