摘要:背景很多時候我們需要用來作為一些標識比如一個用戶登錄后的認證標識實現(xiàn)方式的方式自己定義的需要的值這里用隨機串作為執(zhí)行結(jié)果看著不是很舒服作為強迫癥的我是受不了的的方式執(zhí)行結(jié)果看著稍微舒服些了但是還不夠好反觀微信的一般是不會有后面的號的優(yōu)化執(zhí)行
背景
很多時候我們需要用 token 來作為一些標識, 比如: 一個用戶登錄后的認證標識.
實現(xiàn)方式 md5 的方式:$v = 1; // 自己定義的 需要hash 的value 值 $key = mt_rand(); // 這里用 隨機串作為key $hash = md5($key . $v . mt_rand() . time()); echo $hash;
執(zhí)行結(jié)果: b63426a38f86b726ce0d327d48e47376 看著不是很舒服, 作為強迫癥的我 是受不了的.
md5 + base64 的方式$v = 1; $key = mt_rand(); $hash = md5($key . $v . mt_rand() . time()); $token = base64_encode($hash); echo $token;
執(zhí)行結(jié)果: MWQyMjE2NmI3NDA1MmRjZTQwOTQzZDZjMWU1OTE5OGU= 看著稍微舒服些了, 但是還不夠好, 反觀微信的 openid , 一般是不會有后面的 = 號的
優(yōu)化
$v = 1; $key = mt_rand(); $hash = md5($key . $v . mt_rand() . time()); $token = str_replace("=", "", base64_encode($hash)); echo $token;
執(zhí)行結(jié)果: Yzg4MWU0OTQ0MTRiZTI0YWYwMDJjOTYyODBkNjFmMTM 這下沒有 = 號了, 舒服了些, 但是又太長了, 微信的 openid 可沒這么長
換種 hash 試試sha1 + base64 的方式
$v = 1; $key = mt_rand(); $hash = hash_hmac("sha1", $v . mt_rand() . time(), $key, true); $token = str_replace("=", "", base64_encode($hash)); echo $token;
執(zhí)行結(jié)果: 7pn0pWzO+/TOoISNtDaewa4CyuXw 是短些了, 可是里面有 +/ 號, 很多情況下用 get 傳遞時會被 urlcode, urlcode 過后就這樣了 7pn0pWzO%2b%2fTOoISNtDaewa4CyuXw, 這顯然不是我們想要的
繼續(xù)優(yōu)化
$v = 1; $key = mt_rand(); $hash = hash_hmac("sha1", $v . mt_rand() . time(), $key, true); $token = str_replace("=", "", strtr(base64_encode($hash), "+/", "-_")); echo $token;
執(zhí)行結(jié)果: JM9AkY7SAIROrJ7fhjIU2ApbMsI 這下不會 urlcode了, 看著也舒服些了, 我目前是這樣用的...
但是這是不是最優(yōu)方案呢?目前沒發(fā)現(xiàn)什么更好的方案, 只是說出了我認為的比較好的方案
Vue-cli3.0 + Element UI + ThinkPHP5.1 + RBAC權(quán)限 + 響應(yīng)式的后臺管理系統(tǒng)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29077.html
摘要:注冊流程是從小程序簡稱,以下替代獲取用戶的,給到服務(wù)器,服務(wù)器會用還有自己的等信息一起去微信服務(wù)器請求用戶數(shù)據(jù),注意每一個所對應(yīng)的用戶都是不一樣的。 本博客 貓叔的博客,轉(zhuǎn)載請申明出處閱讀本文約 5分鐘適讀人群:Java后端、Java初級、小程序前端 前后端項目的地址 ShareBookServer ShareBookClient 小程序前端 showImg(https://seg...
摘要:整理一些常用前端知識點,忘記的時候可以翻出來回憶下瀏覽器渲染從輸入網(wǎng)址到顯示網(wǎng)頁的過程分析應(yīng)用層解析域名客戶端先檢查本地是否有對應(yīng)的地址,若找到則返回響應(yīng)的地址。是高階函數(shù)的一種一個特殊用法。 整理一些常用前端知識點,忘記的時候可以翻出來回憶下 瀏覽器渲染 從輸入網(wǎng)址到顯示網(wǎng)頁的過程分析 1、應(yīng)用層DNS解析域名:客戶端先檢查本地是否有對應(yīng)的IP地址,若找到則返回響應(yīng)的IP地址。若沒找...
摘要:整理一些常用前端知識點,忘記的時候可以翻出來回憶下瀏覽器渲染從輸入網(wǎng)址到顯示網(wǎng)頁的過程分析應(yīng)用層解析域名客戶端先檢查本地是否有對應(yīng)的地址,若找到則返回響應(yīng)的地址。是高階函數(shù)的一種一個特殊用法。 整理一些常用前端知識點,忘記的時候可以翻出來回憶下 瀏覽器渲染 從輸入網(wǎng)址到顯示網(wǎng)頁的過程分析 1、應(yīng)用層DNS解析域名:客戶端先檢查本地是否有對應(yīng)的IP地址,若找到則返回響應(yīng)的IP地址。若沒找...
閱讀 1996·2021-11-24 09:39
閱讀 989·2021-11-11 16:55
閱讀 1443·2021-10-09 09:43
閱讀 1431·2021-10-08 10:17
閱讀 1664·2021-08-25 09:41
閱讀 436·2019-08-30 13:02
閱讀 637·2019-08-29 15:14
閱讀 1014·2019-08-29 13:53