【问题标题】:Authenticating a Vuejs frontend with an Express Backend使用 Express 后端对 Vuejs 前端进行身份验证
【发布时间】:2021-01-19 02:33:51
【问题描述】:

当客户端和服务器位于不同的项目中时,我正在寻找一些关于实施身份验证的建议。

服务器

此 API 是作为 Express 服务器构建的。它具有用于 MySQL 数据库的 CRUD 操作的路由。它还有一个使用bcrypt 加密密码的用户模型。在这个项目中没有前端。

客户

这是一个使用 vue-cli 制作的 Vue 项目,并点击上述 API 以获取要显示的数据。

问题

我需要添加身份验证。我在想我会用express-session 来做这件事,但我对它的工作原理有点困惑。我见过的所有教程都将express-sessionpassport 结合使用。这看起来不错,但在所有示例中,passport 转发到服务器上的登录页面。这通常是用handlebars 或其他一些模板框架编写的。由于登录页面位于客户端项目中,因此我不确定最佳实施方式。

我认为它是如何工作的(我错过了什么吗?)

我最初的印象是,对于新用户express-session 会创建一个令牌,我会保存在users 表中(可能在登录时生成并临时存储)。一旦用户使用正确的密码登录,这个令牌就会被传递给客户端以存储为 cookie。当客户端想要访问受限数据时,它会将令牌作为 Authentication 标头传递给服务器以获得权限。

问题

  1. 由于我的项目是分开的,passport 对我的用例仍然有用吗?
  2. 在服务器上创建会话 cookie 并将令牌发送到客户端作为对客户端登录 POST 的响应是否安全?
  3. 是否需要将会话令牌存储在数据库中?
  4. 有更好的选择吗?

【问题讨论】:

    标签: express authentication cookies passport.js express-session


    【解决方案1】:

    在我的项目中,我的设置几乎相同,最终我使用 JWT 生成访问令牌。

    循环从用户将他/她的电子邮件和密码发送到我的登录端点开始。

    在这个阶段,我使用一些秘密字符串对密码进行哈希处理,从数据库中获取用户并检查身份验证是否成功。

    之后,我生成了一个设置了过期时间的访问令牌,并且我希望在所有受保护的路由中都有这个访问令牌。

    通过这种方法,您可以轻松实现不时交换刷新令牌,将刷新令牌保存在您的数据库中。

    这很简单,有利于你了解身份验证的过程是如何完成的。

    jsonwebtoken

    【讨论】:

      猜你喜欢
      • 2020-05-11
      • 2021-09-14
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2018-10-15
      相关资源
      最近更新 更多