lusca with client-sesson fails
Closed this issue · 3 comments
I was trying to use lusca with client-session library and it fails with the below error. Can you please share your views.
lusca requires req.session to be available in order to maintain state
Error: lusca requires req.session to be available in order to maintain state
at Object.create (/Users/msubbiah/sample/sessionapp/node_modules/lusca/lib/token.js:13:15)
at getCsrf (/Users/msubbiah/sample/sessionapp/node_modules/lusca/lib/csrf.js:34:22)
at checkCsrf (/Users/msubbiah/sample/sessionapp/node_modules/lusca/lib/csrf.js:57:20)
at Layer.handle as handle_request
at trim_prefix (/Users/msubbiah/sample/sessionapp/node_modules/express/lib/router/index.js:312:13)
at /Users/msubbiah/sample/sessionapp/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/Users/msubbiah/sample/sessionapp/node_modules/express/lib/router/index.js:330:12)
at next (/Users/msubbiah/sample/sessionapp/node_modules/express/lib/router/index.js:271:10)
at clientSession (/Users/msubbiah/sample/sessionapp/node_modules/client-sessions/lib/client-sessions.js:630:5)
at Layer.handle as handle_request
Precisely as it reads. req.session
needs to be available. In other words (as mentioned in the README):
Please note that you must use express-session, cookie-session, their express 3.x alternatives, or other session object management in order to use lusca.
So add a session provider (express-session with the default MemoryStore
is totally sufficient for development though not for production) before lusca and all should be good.
Note that if you're using lusca by means of kraken, both a session provider and lusca are preconfigured so no need to add either, merely provide overrides as necessary.
Ack. Just read up on client-session. Strangely, they're not following the convention of making the session object available on req.session
by default.
Try setting the cookieName
property in the config object you set for client-session to session
. E.g.:
app.use(clientSession({ cookieName: 'session' }));