|
1 | 1 | local type, xpcall = type, xpcall
|
2 | 2 | local traceback = debug.traceback
|
| 3 | +local string_sub = string.sub |
| 4 | +local string_len = string.len |
3 | 5 | local http_time = ngx.http_time
|
4 | 6 | local ngx_time = ngx.time
|
5 | 7 | local ck = require("resty.cookie")
|
@@ -44,25 +46,31 @@ local session_middleware = function(config)
|
44 | 46 | config.timeout = 3600 -- default session timeout is 3600 seconds
|
45 | 47 | end
|
46 | 48 |
|
| 49 | + |
| 50 | + local err_tip = "session_aes_key should be set for session middleware" |
47 | 51 | -- 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 |
54 | 54 | ngx.log(ngx.ERR, err_tip)
|
55 | 55 | end
|
56 | 56 |
|
57 | 57 | local session_key = config.session_key
|
58 | 58 | local session_aes_key = config.session_aes_key
|
59 |
| - local session_aes_secret = config.session_aes_secret |
60 | 59 | local refresh_cookie = config.refresh_cookie
|
61 | 60 | local timeout = config.timeout
|
62 |
| - ngx.log(ngx.INFO, "session middleware initialized") |
63 | 61 |
|
| 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") |
64 | 72 | return function(req, res, next)
|
65 |
| - if not session_aes_key or not session_aes_secret then |
| 73 | + if not session_aes_key then |
66 | 74 | return next(err_tip)
|
67 | 75 | end
|
68 | 76 |
|
|
0 commit comments