用lua实现登陆超时拦截

local ngx = require("ngx")
local resty_redis = require("resty.redis")
local resty_cookie = require("resty.cookie")
local cjson = require("cjson")

local notFilterUrlMap={
['/mimosaui/login.html'] ="login"--not check url
}

local redis=resty_redis:new()
redis:set_timeout(1000)
ok,err = redis:connect("192.168.23.21","6379")
if not ok then
ngx.log(ngx.ERR,"failed to connect to redis:",err)
end
-- auth
ok, err = redis:get_reused_times()
if 0 == ok then
local ok, err = redis:auth("goooUO4056")
if not ok then
ngx.say("failed to authenticate: ", err)
return
end
elseif err then
ngx.say("failed to get_reused_times: ", err)
end

local login_url='/mimosaui/redirect.html';
local uid='';
local function getuid()
local cookie=resty_cookie:new()
uid=cookie:get("SESSION")
if not uid then
return nil
end
ngx.log(ngx.ERR,"uid is =====",uid)
local res,err=redis:exists("spring:session:sessions:expires:"..uid)
ngx.log(ngx.ERR,"hget==",res)
if res == 0 then
ngx.log(ngx.ERR,"uid is missing,return nil")
return nil;
else
return uid
end
return nil
end

local _url=ngx.var.uri
ngx.log(ngx.ERR,"url=:",_url)
_url=notFilterUrlMap[_url]
if not _url then
uid= getuid();
end

redis:set_keepalive(10000,100)
ngx.log(ngx.ERR,tostring(uid))

if uid == nil then
ngx.log(ngx.ERR,"uid is missing,redirect",login_url)
--ngx.location.capture("/operate/admin/info")
-- ngx.req.set_uri(login_url,true)
ngx.redirect(login_url)
-- local result = {errorCode=10002,errorMessage=""}

-- ngx.header.content_type="application/json"
-- ngx.say(cjson.encode(result))
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值