最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

带有JWT令牌的REST API

IT培训 admin 3浏览 0评论

带有JWT令牌的REST API

因此,我目前正在使用NodeJS,ExpressJS和JWT作为身份验证为我的Web应用程序学习/构建REST API后端服务器。我的查询是关于在无需从Web应用程序发送有效负载的情况下识别服务器中JWT令牌所有者的最佳实践-因为这限制了我不想使用的GET HTTP方法的使用。

[您可能会问为什么我要确定JWT令牌的所有者,我从中学到的所有示例教程都把用户当作了必需的对象,这很简单,只要有一个端点说GET / user /:userId。但是,对于其他特定于用户的端点(例如博客文章),我真的不想诉诸GET / user /:userId / blog /:id,因此也不想使用我的泡菜。

[我可能考虑得太深了,最简单的解决方案正在盯着我-对此我表示歉意。但是我已经考虑了一些想法,包括我目前正在使用的想法,我想请您提供一些反馈意见,或者是否有更好的方法可以做到这一点。


场景:用户已经登录,他们希望在端点GET / blog /:id上查看其博客,但是服务器需要验证用户是否有权查看该博客

1。将用户ID传递到标题内(我当前正在使用的那个)

这可能是最简单的方法。我只是在标题内包含用户ID。

    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${jwtToken}`,
      UserId: userId
    }

是否有必要强制在标头中为服务器的所有调用发送附加数据,更重要的是这样做是否安全?

2。强制所有端点包含/ user /:userId

另一个简单的名称,使其变为GET / user /:userId / blog /:id。虽然这很好,但我对解决方案感到不满。但是,如果这被认为是通常的做法,那就去吧。

3。根据用户ID缓存令牌

这可能是我可以想到的“最佳”解决方案,因为它还可以充当另一层身份验证,并且还可以轻松识别令牌的所有者。但是,这给服务器增加了另一层复杂性,如果需要的话还可以,但是我总是觉得越少越好。

4。暂时将令牌保存在数据库中

类似于数字3,并且可能比必须添加缓存层更容易。但是,我不知道将数据库用作临时存储是否有任何影响。


所以这就是我目前所在的位置。非常感谢您的时间和回复。预先谢谢你。

因此,我目前正在使用NodeJS,ExpressJS和JWT作为身份验证为我的Web应用程序学习/构建REST API后端服务器。我的查询是关于识别所有者的最佳做法...

回答如下:

通常将用户ID编码在JWT令牌中,然后JWT中间件设置属性request.user

带有JWT令牌的REST API

因此,我目前正在使用NodeJS,ExpressJS和JWT作为身份验证为我的Web应用程序学习/构建REST API后端服务器。我的查询是关于在无需从Web应用程序发送有效负载的情况下识别服务器中JWT令牌所有者的最佳实践-因为这限制了我不想使用的GET HTTP方法的使用。

[您可能会问为什么我要确定JWT令牌的所有者,我从中学到的所有示例教程都把用户当作了必需的对象,这很简单,只要有一个端点说GET / user /:userId。但是,对于其他特定于用户的端点(例如博客文章),我真的不想诉诸GET / user /:userId / blog /:id,因此也不想使用我的泡菜。

[我可能考虑得太深了,最简单的解决方案正在盯着我-对此我表示歉意。但是我已经考虑了一些想法,包括我目前正在使用的想法,我想请您提供一些反馈意见,或者是否有更好的方法可以做到这一点。


场景:用户已经登录,他们希望在端点GET / blog /:id上查看其博客,但是服务器需要验证用户是否有权查看该博客

1。将用户ID传递到标题内(我当前正在使用的那个)

这可能是最简单的方法。我只是在标题内包含用户ID。

    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${jwtToken}`,
      UserId: userId
    }

是否有必要强制在标头中为服务器的所有调用发送附加数据,更重要的是这样做是否安全?

2。强制所有端点包含/ user /:userId

另一个简单的名称,使其变为GET / user /:userId / blog /:id。虽然这很好,但我对解决方案感到不满。但是,如果这被认为是通常的做法,那就去吧。

3。根据用户ID缓存令牌

这可能是我可以想到的“最佳”解决方案,因为它还可以充当另一层身份验证,并且还可以轻松识别令牌的所有者。但是,这给服务器增加了另一层复杂性,如果需要的话还可以,但是我总是觉得越少越好。

4。暂时将令牌保存在数据库中

类似于数字3,并且可能比必须添加缓存层更容易。但是,我不知道将数据库用作临时存储是否有任何影响。


所以这就是我目前所在的位置。非常感谢您的时间和回复。预先谢谢你。

因此,我目前正在使用NodeJS,ExpressJS和JWT作为身份验证为我的Web应用程序学习/构建REST API后端服务器。我的查询是关于识别所有者的最佳做法...

回答如下:

通常将用户ID编码在JWT令牌中,然后JWT中间件设置属性request.user

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论