Skip to content

Commit c8c864b

Browse files
committed
fix session aes key length to respect lua-resty-string v0.10+
1 parent e14d833 commit c8c864b

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

bin/scaffold/generator.lua

-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,6 @@ app:use(mw_cookie())
261261
app:use(mw_session({
262262
session_key = "__app__", -- the key injected in cookie
263263
session_aes_key = "aes_key_for_session", -- should set by yourself
264-
session_aes_secret = "aes_secret_for_session", -- should set by yourself
265264
timeout = 3600 -- default session timeout is 3600 seconds
266265
}))
267266

lib/lor/lib/middleware/session.lua

+17-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
local type, xpcall = type, xpcall
22
local traceback = debug.traceback
3+
local string_sub = string.sub
4+
local string_len = string.len
35
local http_time = ngx.http_time
46
local ngx_time = ngx.time
57
local ck = require("resty.cookie")
@@ -44,25 +46,31 @@ local session_middleware = function(config)
4446
config.timeout = 3600 -- default session timeout is 3600 seconds
4547
end
4648

49+
50+
local err_tip = "session_aes_key should be set for session middleware"
4751
-- backward compatibility for lor < v0.3.2
48-
config.session_aes_key = config.session_aes_key or "custom_session_aes_key"
49-
config.session_aes_secret = config.session_aes_secret or config.secret
50-
51-
local err_tip = "session_aes_key and session_aes_secret should be set for session middleware"
52-
if not config.session_aes_key or config.session_aes_key == ""
53-
or not config.session_aes_secret or config.session_aes_secret == "" then
52+
config.session_aes_key = config.session_aes_key or "custom_session_aes_key"
53+
if not config.session_aes_key then
5454
ngx.log(ngx.ERR, err_tip)
5555
end
5656

5757
local session_key = config.session_key
5858
local session_aes_key = config.session_aes_key
59-
local session_aes_secret = config.session_aes_secret
6059
local refresh_cookie = config.refresh_cookie
6160
local timeout = config.timeout
62-
ngx.log(ngx.INFO, "session middleware initialized")
6361

62+
-- session_aes_secret must be 8 charactors to respect lua-resty-string v0.10+
63+
local session_aes_secret = config.session_aes_secret or config.secret or "12345678"
64+
if string_len(session_aes_secret) < 8 then
65+
for i=1,8-string_len(session_aes_secret),1 do
66+
session_aes_secret = session_aes_secret .. "0"
67+
end
68+
end
69+
session_aes_secret = string_sub(session_aes_secret, 1, 8)
70+
71+
ngx.log(ngx.INFO, "session middleware initialized")
6472
return function(req, res, next)
65-
if not session_aes_key or not session_aes_secret then
73+
if not session_aes_key then
6674
return next(err_tip)
6775
end
6876

0 commit comments

Comments
 (0)