如何在Loopback REST API上实现JWT auth?

问题描述 投票:0回答:1

我是nodejs的新手,因此我尝试使用loopback框架实现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.js rest jwt loopbackjs
1个回答
0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.