在前后端分离开发过程中,经常涉及权限验证的问题,一般都是采用由服务端根据前端传递的用户名和密码,验证成功后生成token,然后前端在访问服务端接口时,再附带token访问。
如果服务端高频次的解析token,进行内容验证,则会大大降低接口性能,而采用内存或者redis进行合法的token缓存,通过字符匹配进行验证,可以大幅提高效率,同时控制token缓存周期和缓存数量,按天进行更新,减少数据缓存量。
以下为nodejs实现的核心代码,token生成和验证过程,需要自己定义。
//以当天为有效期,缓存合法的token,避免重复解密计算
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();