[英]How to save data in expressjs/session NodeJS
我有3个文件:app.js,index.js(路由),Users.js(控制器)
一旦我的用户登录(在POST信息和DB之间完成验证),我想使用expressjs / session在会话中保存数据。
这是我在app.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,登录功能中的console.log显示包含我的信息的功能。 但是,当我尝试从/ getSessionInfos URL提取会话时,该会话为空...请发送帮助
您的代码似乎只是正确的一些更改
app.use(session({
secret : 'yourSecret',
resave : false,
saveUninitialized : false,
}));
别忘了先登录,因为您将会话值存储在那儿,然后它肯定会显示带有电子邮件和密码键的对象。 让我知道您是否遇到任何问题。
我知道你没有问这个问题,但是我会以两种方式陈述它,不再建议在节点中使用会话,JSON Web令牌几乎就是宝座。本质上,这是JSON格式的签名数据。 由于已签名,因此收件人可以验证其真实性。 因为它是JSON,所以权重很小。
简单来说,JWT很酷,因为您无需将会话数据保留在服务器上即可对用户进行身份验证。
- 用户呼叫认证服务,通常发送用户名和密码。
- 身份验证服务以签名的JWT进行响应,该JWT指示用户是谁。
- 用户请求访问将令牌发回的安全服务。
- 安全层检查令牌上的签名,如果它是真实的,则授予访问权限。
您可以在npm中使用jwt-simple。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.