【发布时间】:2019-05-23 13:05:36
【问题描述】:
这听起来像是一个非常简单/愚蠢的问题,但我在网上找不到任何关于它的信息。
我正在使用带有 NodeJS 的 Express 4,并尝试使用 express-session middleware 实现会话。我想使用会话来允许/禁止不同用户的某些路由。
我知道我可以在条件路由上使用会话:
const express = require('express');
const Router = require('express').Router;
const router = new Router();
const session = require('express-session');
const sessioning = session({...});
router.post('/login', sessioning, (req, res) => {
});
但这不是我想要做的。即使登录尝试失败,这也会启动会话。
我要做的是仅在成功登录尝试后才开始会话:
const express = require('express');
const Router = require('express').Router;
const router = new Router();
const session = require('express-session');
router.post('/login', (req, res) => {
/* ... Login validations */
if (login === 'success'){
/* ... start session */
}
res.json({...});
});
这样我就可以禁止未经身份验证的用户访问受保护的路由:
router.get('/protected', (req, res) => {
if (!req.session){
res.status(401);
res.end();
return;
}
/* ... */
});
如果我直接在受保护的路由上设置会话,则无法验证用户是否已登录。
谁能指出正确的方向?
【问题讨论】:
标签: node.js express session express-session