58 lines
1.3 KiB
Lua
58 lines
1.3 KiB
Lua
local cjson = require "cjson"
|
|
|
|
local password_path = "password.txt"
|
|
|
|
ngx.req.read_body()
|
|
local body = ngx.req.get_body_data()
|
|
|
|
if not body then
|
|
ngx.status = ngx.HTTP_BAD_REQUEST
|
|
ngx.say("No body found")
|
|
return
|
|
end
|
|
|
|
local ok, json_data = pcall(cjson.decode, body)
|
|
if not ok then
|
|
ngx.status = ngx.HTTP_BAD_REQUEST
|
|
ngx.say("Invalid JSON")
|
|
return
|
|
end
|
|
|
|
local user_account = json_data.account
|
|
local user_password = json_data.password
|
|
|
|
local reply = {}
|
|
|
|
local file = io.open(password_path, "r")
|
|
if not file then
|
|
ngx.log(ngx.INFO, "无法打开文件: ", password_path)
|
|
reply.status = -1000
|
|
reply.message = "服务器错误,找不到 " .. password_path;
|
|
ngx.say(cjson.encode(reply))
|
|
return
|
|
end
|
|
|
|
local credentials = {}
|
|
for line in file:lines() do
|
|
local account, password = line:match("([^=]+)=([^=]+)")
|
|
if account and password then
|
|
credentials[account] = password
|
|
end
|
|
end
|
|
file:close()
|
|
|
|
local session = require "resty.session".start()
|
|
|
|
if credentials[user_account] == user_password then
|
|
reply.status = 0
|
|
reply.message = "登录成功"
|
|
session:set("account", user_account)
|
|
session:set("authenticated", true)
|
|
session:save()
|
|
else
|
|
reply.status = -100
|
|
reply.message = "登录失败"
|
|
end
|
|
|
|
ngx.say(cjson.encode(reply))
|