首页 > 解决方案 > 如何在 Loopback REST API 上实现 JWT 身份验证?

问题描述

我是 nodejs 的新手,所以我尝试使用环回框架实现 REST API,以尝试简化构建过程。我做了正确的模型,还定制了一些端点,但是,当与前端(AngularJS)连接时,我找到的所有代码,以及我知道要构建的代码,都需要一个 JWT 令牌来执行任何需要授权/身份验证的任务,但似乎loopback在我登录时发送了一个uid2令牌。我在stackoverflow和Github中搜索了很多,我找到的最接近的是这个(https://github.com/strongloop/loopback/issues/1905#issuecomment- 310382322)但代码似乎在这里失败:

const data = jwt.verify(id, secretKey);
        cb(null, {userId: data.id});

任何想法?

标签: node.jsrestjwtloopbackjs

解决方案


简而言之,您需要知道谁在拨打电话。如果您使用默认环回身份验证,您会看到在req对象中有accessToken标识用户的属性。如果你想使用 JWT,你可以使用很多现成的模块,例如。loopback-jwtloopback-jwt-advanced

一般来说,您需要做的是应用一个负责用户授权的中间件(我强烈建议您熟悉该middleware术语)。简而言之,中间件是您的请求正在经历的一层,您可以修改它的主体或拒绝请求。

在抽象步骤中,在您的中间件中,您必须:

  1. 从请求中获取令牌
  2. 验证令牌
  3. 根据令牌识别用户
  4. 为给定用户创建环回 AccessToken 实体
  5. 将令牌放入,req.accessToken所以现在环回将知道您是谁,您可以使用 ACL。

所以这或多或少是这些扩展正在做的事情。


推荐阅读