node.js - Nodejs Express 中的 session

标签 node.js sequelize.js express-session

我正在使用 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 表中包含当前用户数据。 现在,

  1. 如何验证该用户是否已通过身份验证?
  2. 我注意到,对于每个请求,我都会得到不同的 sessionID(这样可以吗)

谢谢

最佳答案

您好,用户管理器您可以使用 passportjs 它是一个很棒的 Express 用户管理器,并为您的用户管理器逻辑提供高质量的处理。

关于node.js - Nodejs Express 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42473270/

相关文章:

php - 使用 AES-128-CTR 加密在 PHP (openssl_encrypt) 与 Node.js (crypto) 上给出不同的结果

node.js - Sequelize - 根据标题中的术语过滤帖子?

javascript - 我应该在服务器启动时运行所有的 Sequelize 迁移吗?

node.js - 如果从新设备 MEANJS 登录,请删除以前的 session

node.js - 为什么我会在 Node v5.7.0 上收到 "Promise is not defined."错误

node.js - 如何将 hapi auth 插件变成可选插件

node.js - 用于检查身份验证的快速 session 中间件

node.js - Heroku 上的 Redis 连接错误 : 127. 0.0.1 而不是 REDIS_URL

python - 使用node和python读取同一文件时结果的差异

node.js - 使用 Sequelize 拉取关联值