.lua文件

-- 验证token文件
-- 2020/01/08 16:25
-- @auther Email: 1178350505@qq.com

-- 更新缓存时间
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

openresty执行阶段

set_by_lua: --流程分支判断,判断变量初始哈

rewrite_by_lua: --用lua脚本实现nginx rewrite

access_by_lua: --ip准入,是否能合法性访问,防火墙

content_by_lua: --内存生成

header_filter_by_lua:--过滤http头信息,增加头信息

body_filter_by_lua: --内容大小写,内容加密

log_by_lua: --本地/远程记录日志
最后修改:2021 年 01 月 10 日
如果觉得我的文章对你有用,请随意赞赏