我有3个文件:app.js,index.js(routes(,Users.js(controller(
一旦我的用户登录(在 POST 信息和数据库之间完成验证(,我想使用 expressjs/session 将数据保存在会话中。
这是我在应用程序中的会话声明.js :
var session = require('express-session');
app.use(session({
resave: true,
saveUninitialized: true,
secret: 'trolololo'
}));
这是我的路线:
router.post('/login', function(req, res, next) {
Users.login(req, res);
});
router.get('/getSessionInfos', function(req,res,next){
console.log(req.session);
});
这是登录的控制器:
login : function(req, res){
var formEmail = req.body.email;
var formPassword = req.body.password;
User.findOne({ where: {email: formEmail} }).then(function(user) {
if(user){
if (user.password == formPassword){
console.log('User connected');
req.session.email = formEmail;
req.session.password = formPassword;
console.log(req.session);
res.status(200).send('User Authentified');
}else{
res.status(401).send('Invalid Password');
}
}else{
res.status(401).send('Username');
}
});
},
登录工作我得到 200 状态和我的控制台.log在登录功能中显示一个包含我信息的功能。但是当我尝试从/getSessionInfos URL 获取我的会话时,它是空的......请发送帮助
我知道你没有问这个,但无论如何我都会说明,不再建议在节点中使用会话,json Web 令牌几乎是王位。从本质上讲,它是一段 JSON 格式的签名数据。因为它是签名的,所以收件人可以验证其真实性。因为它是JSON,所以它的权重很小。
简单来说,JWT 很酷,因为您无需将会话数据保留在服务器上即可对用户进行身份验证。
- 用户调用认证服务,通常发送用户名和 密码。
- 身份验证服务使用签名的 JWT 进行响应,该 JWT 表示谁 用户是。
- 用户请求访问发送回令牌的安全服务。
- 安全层检查令牌上的签名以及令牌是否真实 访问权限被授予。
你可以在 npm 中使用 jwt-simple。
您的代码似乎是正确的,只有一些更改
app.use(session({
secret : 'yourSecret',
resave : false,
saveUninitialized : false,
}));
不要忘记先登录,因为您将会话值存储在那里,然后它肯定会显示带有电子邮件和密码密钥的对象。如果您遇到任何问题,请告诉我。