我正在使用 const SessionStore = require('express-session-sequelize')(expressSession.Store);
来存储 session 。
我想在 session 中保存登录网站的当前用户。
这是商店的配置:
const expressSession = require('express-session');
const SessionStore = require('express-session-sequelize')(expressSession.Store);
const Sequelize = require('sequelize');
const myDatabase = new Sequelize('analytic', 'root', '', {
host: 'localhost',
dialect: 'mysql'
});
const sequelizeSessionStore = new SessionStore({
checkExpirationInterval: 15 * 60 * 1000, // The interval at which to cleanup expired sessions in milliseconds.
expiration: 24 * 60 * 60 * 1000, // The maximum age (in milliseconds) of a valid session.
db: myDatabase
});
const cookieParser = require('cookie-parser');
app.use(cookieParser());
app.use(expressSession({
secret: '412415415415415121212121',
store: sequelizeSessionStore,
name: 'session_id',
resave: false,
saveUninitialized: false
}));
所以,现在登录我有这个:
var express = require('express');
var url = require('url');
var router = express.Router();
var User = require('../../model').User;
var jwt = require('jsonwebtoken');
var app = require("../../application");
router.post('/authenticate', function(req, res) {
User.doLogin(req).then((result)=> {
if (result) {
if (result.error) {
if (result.error.hasOwnProperty("email")) {
res.send(400, { success: false, message: "Incorrect user / password"});
} else if (result.error.hasOwnProperty("activated")) {
res.send(400, {success: false, message: "You are not activated yet"});
}
} else {
//app.createSession(req);
req.session.user = result;
res.send(200, result);
}
}
});
});
module.exports = router;
现在,在此req.session.user = result;
之后,我在数据库 session 表中包含当前用户数据。
现在,
- 如何验证该用户是否已通过身份验证?
- 我注意到,对于每个请求,我都会得到不同的 sessionID(这样可以吗)
谢谢
最佳答案
您好,用户管理器您可以使用 passportjs 它是一个很棒的 Express 用户管理器,并为您的用户管理器逻辑提供高质量的处理。
关于node.js - Nodejs Express 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42473270/