我有一个简单的web应用程序,用户可以创建一个帐户并登录.每当用户登录时,我都会为他生成一个json-web-token并将其存储在他的数据库对象上.当用户访问某些路由时,我使用该token进行身份验证(标头上的标记),但问题是当用户刷新页面时,我丢失了该令牌,他必须再次提供电子邮件和密码才能生成另一个令牌.我正在考虑使用localStorage或cookies,但也许有一种更好的/常用的方法.任何建议都会有帮助的,谢谢。
router.post('/user/login' ,async (req,res)=>{
try {
const user = await User.findByCredentials(req.body.email,req.body.password)
const token = await user.generateToken()
res.send({ user, token })
} catch(e) {
res.status(404).send(e)
}
})axios({
method: "post",
url: "/api/user/login",
data: {
email: email,
password: password
}
})发布于 2019-08-17 22:37:01
使用持久会话的传统方法(,me,特性)是使用cookies。
您可以设置最大年龄,例如30天时登录。
router.post('/user/login', function(req, res) {
....
req.session.cookie.maxAge = 30 * 24 * 60 * 60 * 1000; // Cookie expires after 30 days
....
});逻辑流程应该是:
hash(cookie))并将其存储在DB中。发布于 2019-08-17 22:24:51
在页面的第一行启动会话,并将登录凭据存储在其中。登录后可以访问所有其他页面,您也可以这样做。
https://stackoverflow.com/questions/57540281
复制相似问题