fwlua 发表于 2024-6-15 19:58:35

网站登录权限简单验证示例

该示例演示如何使用session存储与校验用户权限

local request = require("fastweb.request")
local response = require("fastweb.response")
local fw = require("fastweb")
local cjson = require("cjson")
local function reply(code,msg,data)
   
    response.header("Content-Type","application/json")
    response.send(cjson.encode({
      code = code,
      msg = msg,
      data = data
    }))
   
end

-- 登录
local function login()
    local token = request.header("token")
    -- 获取session
    local session = request.session(token)
    -- 验证session有效
    if session:check() then
      reply(201,"你已经登录过了")
      return
    end

    -- 验证账号密码
    if request.param("username") ~= "fastweb" or request.param("password") ~= "123456" then
      reply(201,"账号或密码不正确")
      return
    end

    -- 生成TOKEN
    token = fw.make_software_guid()
    session:init(token)


    -- 填充用户信息
    session:set("login_time",os.date("%Y-%m-%d %H:%M:%S"))

    reply(200,"",{
      token = token
    })
end
-- 获取个人信息
local function getinfo()
    local token = request.header("token")
    -- 获取session
    local session = request.session(token)
    if session:check() == false then
      reply(401,"登录信息已过期")
      return
    end

    reply(200,"",{
      login_time = session:get("login_time")
    })
end

-- 判断请求类型
if request.param("action") == "login" then
    login()
elseif request.param("action") == "getinfo" then
    getinfo()
end
1、使用session,通过获取协议头token作为唯一标识符验证和存储用户临时信息。
2、session() 函数代码在website.lua



页: [1]
查看完整版本: 网站登录权限简单验证示例