我想使用Cookie来保持用户登录。
在此页here上,他们说
要使用Cookie进行身份验证,请将以下内容添加到server.js (开机前):
app.use(loopback.token({ model: app.models.accessToken }));
看起来很简单。我认为在登录过程中,Loopback会自动设置cookie,但它仍然无法正常工作,我在Chrome开发工具中检查我的cookie并且没有设置。
我错过了什么吗?否则,什么是挂钩登录方法以设置cookie /标题的最佳方式?
我在loopback.token()
方法here上找到了文档,它确切地说明了它检查令牌的位置。
答案 0 :(得分:2)
我得到了它的工作。这个cookie没有签名。
我对Express和这类低级别的东西都很陌生。我记得读过这个饼干必须签名但是我不知道我必须通过“签名:真实”。
My issue on Github如果这有助于其他任何人。
答案 1 :(得分:0)
以下是详细步骤:
npm install --save cookie-parser
npm install --save express-session
修改 server.js ,以便添加 cookieParser 并定义Cookie密码
var cookieParser = require(' cookie-parser');
app.use(cookieParser('随机引用'));
此代码应出现在
之前app.set('views', './server/views');
app.set('view engine', 'ejs');
当您登录用户创建签名cookie时,重要的是它是签名cookie,因为Loopback不会读取未签名的cookie。例如:
router.post('/login', function(req, res) {
User.login({
email: req.body.email,
password: req.body.password
}, 'user', function(err, token) {
if (err) {
if (err.details && err.code === 'LOGIN_FAILED_EMAIL_NOT_VERIFIED') {
res.render('reponseToTriggerEmail', {
title: 'Login failed',
content: err,
redirectToEmail: '/api/users/' + err.details.userId + '/verify',
redirectTo: '/',
redirectToLinkText: 'Click here',
userId: err.details.userId
});
} else {
res.render('response', {
title: 'Login failed. Wrong username or password',
content: err,
redirectTo: '/',
redirectToLinkText: 'Please login again',
});
}
return;
}
res.cookie('access_token', token.id, { signed: true , maxAge: 300000 });
res.render('engine', {
email: req.body.email,
accessToken: token.id,
redirectUrl: '/api/users/change-password?access_token=' + token.id
});
});
});
就是这样。