旅游信息網(wǎng)站開發(fā)背景站內(nèi)關(guān)鍵詞排名優(yōu)化軟件
在前后端分離開發(fā)過(guò)程中,經(jīng)常涉及權(quán)限驗(yàn)證的問(wèn)題,一般都是采用由服務(wù)端根據(jù)前端傳遞的用戶名和密碼,驗(yàn)證成功后生成token,然后前端在訪問(wèn)服務(wù)端接口時(shí),再附帶token訪問(wèn)。
如果服務(wù)端高頻次的解析token,進(jìn)行內(nèi)容驗(yàn)證,則會(huì)大大降低接口性能,而采用內(nèi)存或者redis進(jìn)行合法的token緩存,通過(guò)字符匹配進(jìn)行驗(yàn)證,可以大幅提高效率,同時(shí)控制token緩存周期和緩存數(shù)量,按天進(jìn)行更新,減少數(shù)據(jù)緩存量。
以下為nodejs實(shí)現(xiàn)的核心代碼,token生成和驗(yàn)證過(guò)程,需要自己定義。
//以當(dāng)天為有效期,緩存合法的token,避免重復(fù)解密計(jì)算var cacheToken = {};function TokenToID(_token) {let _rt = {success:false,msg:""};var _dt = moment(Date.now()).format('YYYY-MM-DD');if(cacheToken[_dt]&&(cacheToken[_dt].length<10000)){let _item = cacheToken[_dt].find(obj=>obj.token==_token);if(_item&&_item.id){_rt = {success:true,msg:_item.id};}else{let tu = new TokenUtil(_token);let _res = tu.verifyToken();