LoopBack 中的访问控制

Posted

技术标签:

【中文标题】LoopBack 中的访问控制【英文标题】:Access control in LoopBack 【发布时间】:2015-05-22 12:30:29 【问题描述】:

我正在基于 StrongLoop API 平台为我的客户构建一个事件管理 Web 应用程序,我需要将 CRUD 对数据的访问限制为当前登录的用户(客户端)。

我已经按照https://github.com/strongloop/loopback-faq-user-management,https://github.com/strongloop/loopback-example-access-control这些教程成功登录和注销,现在需要在AngularJS客户端上实现恢复正确的数据。

我在“事件”模型上设置了如下关系:

"relations": 
  "user": 
    "type": "belongsTo",
    "model": "User",
    "foreignKey": "ownerId"
  

还有内置的用户模型:

"relations": 
  "events": 
    "type": "hasMany",
    "model": "event",
    "foreignKey": "ownerId"
  

不确定登录后在何处/如何定义访问令牌以进行 API 调用。我是否还需要对 $scope.events = Event.find(); 应用过滤器以仅检索 ownerID: <currentUserId> 所在的记录,或者 ACL 是否应该为我实现这一点?

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

1) 访问令牌自动保存到 localStorage/sessionStorage 和 angular-sdk 内部。因此,它会在对 API 的每个请求中附加到 authorization 标头。

2) 是的,您应该应用过滤器,因为 ACL 只允许或拒绝访问远程方法。顺便说一句,查询用户事件的另一种方法是

User.events(id: currentUserId)

【讨论】:

以上是关于LoopBack 中的访问控制的主要内容,如果未能解决你的问题,请参考以下文章

LoopBack 2.0 发布,开源 API 框架

在 LoopBack 4 中访问 express 应用以添加中间件

Java中的访问控制符

访问控制列表有哪几种类型,分别在哪个位置?

Java中的访问控制

域驱动设计中的访问控制