使用 Express 后端验证 Vuejs 前端
Authenticating a Vuejs frontend with an Express Backend
当客户端和服务器位于不同的项目中时,我正在寻找有关实现身份验证的一些建议。
服务器
此 API 是作为 Express 服务器构建的。它具有使用 MySQL 数据库进行 CRUD 操作的路由。它还有一个用户模型,利用 bcrypt
来加密密码。在这个项目中没有前端。
客户
这是一个用vue-cli
做的Vue项目,点击上面的API获取数据显示
问题
我需要添加身份验证。我在想我会用 express-session
来做这个,但我对它的工作原理有点困惑。我看过的所有教程都将 express-session
与 passport
结合使用。这看起来不错,但在所有示例中 passport
转发到服务器上的登录页面。这通常是用 handlebars
或其他一些模板框架编写的。我不确定最佳实施方式,因为登录页面位于客户端项目中。
我认为它是如何工作的(我错过了什么吗?)
我最初的印象是对于新用户 express-session
会创建一个令牌,我会保存在 users
table 中(可能在登录时生成并临时存储) .一旦用户使用正确的密码登录,此令牌将传递给客户端以存储为 cookie。当客户端想要访问受限数据时,它会将令牌作为身份验证 header 传递给服务器以获得权限。
问题
- 既然我的项目是分开的,
passport
对我的用例仍然有用吗?
- 在服务器上创建 session cookie 并将令牌发送到客户端作为对客户端登录的响应是否安全 POST?
- 我需要在数据库中存储 session 令牌吗?
- 还有更好的选择吗?
在我的项目中,我有几乎相同的设置,最后我使用 JWT 生成访问令牌。
循环从用户向我的登录端点发送 his/her 电子邮件和密码开始。
在这个阶段,我使用一些秘密字符串对密码进行哈希处理,从数据库中获取用户并检查身份验证是否成功。
之后我生成了一个设置了过期时间的访问令牌,我希望所有受保护的路由都有这个访问令牌。
通过这种方法,您可以轻松实现刷新令牌不时交换,将刷新令牌保存在您的数据库中。
这很简单,有助于您了解身份验证过程是如何完成的。
当客户端和服务器位于不同的项目中时,我正在寻找有关实现身份验证的一些建议。
服务器
此 API 是作为 Express 服务器构建的。它具有使用 MySQL 数据库进行 CRUD 操作的路由。它还有一个用户模型,利用 bcrypt
来加密密码。在这个项目中没有前端。
客户
这是一个用vue-cli
做的Vue项目,点击上面的API获取数据显示
问题
我需要添加身份验证。我在想我会用 express-session
来做这个,但我对它的工作原理有点困惑。我看过的所有教程都将 express-session
与 passport
结合使用。这看起来不错,但在所有示例中 passport
转发到服务器上的登录页面。这通常是用 handlebars
或其他一些模板框架编写的。我不确定最佳实施方式,因为登录页面位于客户端项目中。
我认为它是如何工作的(我错过了什么吗?)
我最初的印象是对于新用户 express-session
会创建一个令牌,我会保存在 users
table 中(可能在登录时生成并临时存储) .一旦用户使用正确的密码登录,此令牌将传递给客户端以存储为 cookie。当客户端想要访问受限数据时,它会将令牌作为身份验证 header 传递给服务器以获得权限。
问题
- 既然我的项目是分开的,
passport
对我的用例仍然有用吗? - 在服务器上创建 session cookie 并将令牌发送到客户端作为对客户端登录的响应是否安全 POST?
- 我需要在数据库中存储 session 令牌吗?
- 还有更好的选择吗?
在我的项目中,我有几乎相同的设置,最后我使用 JWT 生成访问令牌。
循环从用户向我的登录端点发送 his/her 电子邮件和密码开始。
在这个阶段,我使用一些秘密字符串对密码进行哈希处理,从数据库中获取用户并检查身份验证是否成功。
之后我生成了一个设置了过期时间的访问令牌,我希望所有受保护的路由都有这个访问令牌。
通过这种方法,您可以轻松实现刷新令牌不时交换,将刷新令牌保存在您的数据库中。
这很简单,有助于您了解身份验证过程是如何完成的。