qar*_*dso 4 javascript session redis express express-session
我有一个非常小的快递应用程序来说明我遇到的问题.
我在我的快递应用程序上使用connect-redis作为会话存储.我有一个问题,只是连接到它.只需打印出req.session.store结果undefined如下所示:
const session = require('express-session')
const app = require('express')()
const RedisStore = require('connect-redis')(session);
const isDev = process.env.NODE_ENV !== 'production'
app.use(session({
store: new RedisStore({
host: 'localhost',
port: 6379
}),
secret: 'super-secret-key', // TBD: grab from env
resave: false,
saveUninitialized: false,
cookie: {
maxAge: 1000 * 60 * 60 * 24,
secure: !isDev, // require HTTPS in production
}
}))
app.get('/', (req, res) => {
console.log('**testing**')
console.log(req.session.store)
res.send('rendering this text')
})
app.listen(3001, () => {
console.log('listening on 3001')
})
Run Code Online (Sandbox Code Playgroud)
这个输出是:
listening on 3001
**testing**
undefined
Run Code Online (Sandbox Code Playgroud)
在store酒店,除了当前和方法之外,我还尝试通过url酒店和client酒店进行连接.hostport
我没有看到任何错误,所以我不确定为什么store总是未定义.
我错过了什么?
另外,我确实开始使用redis redis-server,我可以通过其他客户端连接到它
更新1
此外,我确实看到了一些有用的StackOverflow.问题是,从版本1.5>来看express-session,它表示你不需要cookie-parser模块,所以我不相信这是问题所在.
req.session只会拥有设置为会话的属性,您从未设置名为的会话属性store.下面是工作RedisStore会话的示例代码
const express = require('express');
const app = express();
const session = require('express-session');
const RedisStore = require('connect-redis')(session);
const redis = require('redis');
const client = redis.createClient({
host: '127.0.0.1',
port: 6379
});
client.on('error', function (err) {
console.log('could not establish a connection with redis. ' + err);
});
client.on('connect', function (err) {
console.log('connected to redis successfully');
});
app.use(session({
store: new RedisStore({client: client}),
secret: 'super-secret-key',
resave: true,
saveUninitialized: true,
cookie: {
ttl: 30 * 10000,
httpOnly: true,
secure: false
}
}));
app.get('/', (req, res) => {
client.get('user', (err, data) => {
console.log('data in redis:', data)
});
res.status(200).send('OK');
});
app.get('/login', (req, res) => {
if (req.session.user) {
res.redirect('/')
} else {
client.set('user', JSON.stringify({username: 'Adeeb'}))
}
res.send('login');
})
app.get('/logout', (req, res) => {
req.session.destroy();
res.send('logout');
});
app.listen(3001, () => {
console.log('server running on port 3001')
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |