我有3个文件:app.js,index.js(路由),Users.js(控制器)
一旦我的用户登录(在POST信息和数据库之间完成验证),我想使用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获取会话时它是空的...请发送帮助
答案 0 :(得分:0)
您的代码似乎只有一些更改
app.use(session({
secret : 'yourSecret',
resave : false,
saveUninitialized : false,
}));
当您在那里存储会话值时,不要忘记首先登录,然后它肯定会显示带有电子邮件和密码密钥的对象。 如果您遇到任何问题,请告诉我。
答案 1 :(得分:0)
我知道你没有问过这个问题,但是无论如何都会说明,不再在节点中推荐会话,json web令牌几乎就是王位。本质上它是一个签名的数据以JSON格式。因为它已签名,收件人可以验证其真实性。因为它的JSON重量非常小。
简单来说,JWT很酷,因为您不需要在服务器上保留会话数据以便对用户进行身份验证。
- 用户呼叫身份验证服务,通常发送用户名和 密码。
- 身份验证服务使用签名的JWT进行响应,该JWT表示谁 用户是。
- 用户请求访问发送令牌的安全服务。
- 安全层检查令牌上的签名以及它是否真实 访问被授予。
你可以在npm中使用jwt-simple。