您如何(如果可能)使用以下代码在网站中实现Bcrypt和JWT?

时间:2019-05-02 21:14:27

标签: node.js express jwt bcrypt

我现在正在Node.js上学习一门课程,并且正在完成使用JWT和Bcrypt进行身份验证的API。代码可以在下面的链接中找到。该代码非常简单,我完全理解,但我的问题是,这对于Web应用程序而不使用邮递员将如何工作?甚至可以从前端使用HTML表单,按钮或其他某种方式在req.header中发送这些身份验证承载令牌吗?如果不使用Passport,有没有办法做到这一点?如果可以的话,请有人给我一个简短的答案,让我对如何做有一个想法,因为我花了好几个小时试图查看这种身份验证方法是否可以以某种方式用于Web应用程序。

https://github.com/andrewjmead/node-course-v3-code/tree/master/task-manager/src

2 个答案:

答案 0 :(得分:1)

我使用您提供的链接查看了您的代码。简短的答案是char,您可以从前端在YES内发送承载令牌。

发送方式取决于您的前端实现。

  1. 如果使用提取API,则可以使用提取API请求选项发送承载令牌
req.headers.authorization

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch处查看更多详细信息,如何使用获取api

  1. 如果您使用jquery,则此答案也应How Set Authorization headers at HTML Form or at A href

我很确定还有其他从前端发送令牌的方法。我已经使用了访存API。

答案 1 :(得分:1)

对于不使用邮递员的网络应用程序,它将如何工作?

  1. 首先,您需要创建一个具有用户名和密码之类的登录输入的HTML表单/角度应用程序
  2. 然后通过发布用户输入的值进行ajax调用(如果使用html应用程序)或服务调用(如果使用角度)/ users / login,您将获得成功身份验证的令牌。
  3. 然后将令牌存储在本地存储/ cookie中,然后显示仪表板页面。
  4. 当用户导航到其他页面时,如果使用角度应用程序,则使用拦截器在每个请求上传递Bearer令牌。该应用程序将验证并提供json响应。

是否甚至可以从前端使用HTML表单,按钮或其他某种方式在req.header中发送这些身份验证承载令牌?

不使用Passport就无法实现这一目标吗?

  • 注意:使用Passport的优势:Passport是Node.JS的身份验证中间件,它不适用于任何特定的身份验证方法,OAuth,JWT之类的身份验证方法是在Passport中通过Strategy模式实现的,因此这意味着您可以交换身份验证机制,而不会影响应用程序的其他部分。Passport利用策略(例如本地策略)或随着社交网络的兴起,使用OAuth提供程序(例如facebook或twitter)进行单点登录

Ref:完整示例https://www.toptal.com/angular/angular-6-jwt-authentication