首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在页面刷新后保持用户登录

如何在页面刷新后保持用户登录
EN

Stack Overflow用户
提问于 2019-08-17 22:09:34
回答 2查看 5.9K关注 0票数 3

我有一个简单的web应用程序,用户可以创建一个帐户并登录.每当用户登录时,我都会为他生成一个json-web-token并将其存储在他的数据库对象上.当用户访问某些路由时,我使用该token进行身份验证(标头上的标记),但问题是当用户刷新页面时,我丢失了该令牌,他必须再次提供电子邮件和密码才能生成另一个令牌.我正在考虑使用localStoragecookies,但也许有一种更好的/常用的方法.任何建议都会有帮助的,谢谢。

代码语言:javascript
复制
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)
    }
})
代码语言:javascript
复制
axios({
  method: "post",
  url: "/api/user/login",
  data: {
    email: email,
    password: password
  }
})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-17 22:37:01

使用持久会话的传统方法(,me,特性)是使用cookies。

您可以设置最大年龄,例如30天时登录。

代码语言:javascript
复制
router.post('/user/login', function(req, res) {
    ....
    req.session.cookie.maxAge = 30 * 24 * 60 * 60 * 1000; // Cookie expires after 30 days
    ....
});

逻辑流程应该是:

  1. 当用户成功登录时,将发出登录cookie。
  2. 它应该包含某种令牌,然后需要HASH(hash(cookie))并将其存储在DB中。
  3. 当非登录用户访问站点并显示登录cookie时,将在数据库中查找系列标识符。
  4. 如果它找到经过身份验证的cookie,否则将请求登录。
票数 5
EN

Stack Overflow用户

发布于 2019-08-17 22:24:51

在页面的第一行启动会话,并将登录凭据存储在其中。登录后可以访问所有其他页面,您也可以这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57540281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档