-- 验证token文件
-- 2020/01/08 16:25
-- 更新缓存时间
ngx.update_time();
local ntime = ngx.time();
local uri = ngx.var.uri;
-- 获取请求参数
local args = ngx.req.get_uri_args();
-- 获取请求参数中 token 信息
local token = args["token"];
if (token == nil) then
-- token为空
return ngx.exit(403)
else
local etime = tonumber(string.sub(token,9))
-- 校验token格式是否正确
if (string.len(token) == 18 and etime ~= nil and tostring(string.sub(token,0,8)) ~= nil) then
-- 判断token是否过期
if ( ntime > etime ) then
return ngx.exit(403)
end
local str = string.sub(ngx.md5(etime.."key"..etime),0,6)
local token2 = string.sub(ngx.md5("key"..etime..str),0,8)..etime;
-- 校验 token 是否相等
if token ~= token2 then
-- token错误
return ngx.exit(403)
end
else
return ngx.exit(403)
end
end
代码片段