node.js - 如何在 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});
任何想法?
解决方案
简而言之,您需要知道谁在拨打电话。如果您使用默认环回身份验证,您会看到在req
对象中有accessToken
标识用户的属性。如果你想使用 JWT,你可以使用很多现成的模块,例如。loopback-jwt或loopback-jwt-advanced。
一般来说,您需要做的是应用一个负责用户授权的中间件(我强烈建议您熟悉该middleware
术语)。简而言之,中间件是您的请求正在经历的一层,您可以修改它的主体或拒绝请求。
在抽象步骤中,在您的中间件中,您必须:
- 从请求中获取令牌
- 验证令牌
- 根据令牌识别用户
- 为给定用户创建环回 AccessToken 实体
- 将令牌放入,
req.accessToken
所以现在环回将知道您是谁,您可以使用 ACL。
所以这或多或少是这些扩展正在做的事情。
推荐阅读
- c# - 如何以编程方式截取部分隐藏的窗口而不将其置于前面?
- asp.net - 为什么我的 UserControl 的标记告诉我“变量未定义”,尽管变量已定义并在代码中公开?
- python - Python 在尝试使用 click() 和迭代删除对象时引发 StaleElementReferenceException
- reactjs - 尝试过滤我在 ReactJs 中使用 fetch API 获取的数据
- rust - 错误[E0412]:在此范围内找不到类型“字符串”
- wso2 - 尝试发布 API WSO2 2.6.0 时出错
- angular - Angular 2:从一个函数将值设置为变量,然后在同一类的另一个函数中获取它
- electron - 在 Windows 10 上滚动分页页面时,electron.js 中出现“GPU 进程意外退出:exit_code=34”错误
- javascript - ajax请求后如何在动态html中注册onclick函数?
- perl - Perl OOP 看不到新方法