当前位置: 首页 > 知识库问答 >
问题:

在Rest API中用Facebook维护Express和NodeJS中JWT的密钥和访问令牌

祁承望
2023-03-14

我有两份申请:

    null
    null

这就是流在我的应用程序中的工作方式:

>

  • Angular客户端有一个登录按钮
  • 用户单击按钮>Facebook Auth启动
  • 客户端接收user_id和FB访问令牌
  • 客户端在'http://Server.com/auth/login'将user_id和访问令牌发送[POST json body]到Node+Express服务器
  • 节点服务器已将express-jwt应用于除/auth/login以外的所有路由,并使用

    var expressJwt=require('express-jwt');

    var jwt=require('JSONWebToken');

    app.use(expressjwt({secret:''}).除非({path:['/auth/login']}));

    节点服务器从req.body接收数据,使用JavascriptSDK从facebook获取所有配置文件细节,并使用

    var token=expressjwt.sign({profile},);

    现在,我的问题是:

    1. 我真的需要将JWT令牌存储在数据库中吗?我当然没有将请求头中的令牌与数据库进行比较
    2. 是否需要在每次登录时生成随机密钥以确保安全?如果是,那么如何同时适用于客户机和服务器?
    3. 何时何地需要检查令牌过期?如何刷新它?

    我对设计流程和机制有点迷茫。

  • 共有1个答案

    屠兴旺
    2023-03-14

    公元1年。您不必将JWT存储在数据库中。用户ID可以是有效负载的一部分,因此不需要它。

    公元2年。服务器端应用程序通常使用一个密钥来生成所有JWT。

    公元3年。检查令牌是否已过期的每个请求到您的API和禁止访问,如果令牌已过期,返回401状态代码。客户端应用程序应该提示用户凭据和请求新的JWT。如果希望避免用户重新提交凭据,可以发出刷新令牌,以后可用于生成新的JWT。

    JWT刷新令牌流

    http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/

     类似资料:
    • 问题内容: 我有两个应用程序: server ( REST API Server) node js Express jsonwebtokens express-jwt mongoose client (Portable Front-end) bootstrap Angular JS local-storage angular-facebook angular-jwt 稍后,客户端应用程序将使用ph

    • 我试图编译代码时遇到了这个异常。我已经安装了eclips工具包,我正在使用EclipseKepler 异常线程"main"java.lang.NoClassDefFoundError: org/apache/共用/日志/LogFactory在com.amazonaws.Amazon WebServiceClient.(Amazon WebServiceClient.java:56)在test_to

    • 这是我的身份验证流程: 用户登录后收到两个令牌(具有过期时间的访问令牌和没有过期时间的刷新令牌) 对于每个用户,刷新令牌存储在数据库中名为refreshTokens的json列中(这是一个数组) 在客户端,访问令牌和刷新令牌都存储在本地存储器上 当需要验证用户时,如果访问令牌过期,将使用刷新令牌创建一个新的访问令牌,并将其发送回用户并保持用户登录 当用户注销时,数据库中存储的刷新令牌(在refre

    • > 如果刷新令牌过期,这意味着用户将定期注销,这从业务角度来看是非常不希望的,这可能会损害用户的保留。是否有一种方法可以在不削弱安全性的情况下避免这种情况,例如使刷新令牌成为“永恒的”? 存储和清理刷新令牌表以防止未使用的令牌积累的最佳方式是什么?假设我有以下表结构:、、。如果策略是永远不会使刷新令牌过期,则使它们无效的唯一方法是当用户注销时。但是,用户也可以删除应用程序,丢失或损坏设备,或者因为