【问题标题】:Is possible to use Oauth2 scopes to scope model data?是否可以使用 Oauth2 范围来确定模型数据的范围?
【发布时间】:2021-08-19 21:34:48
【问题描述】:

我读到的关于 Oauth2 范围的每个地方都使用了读取、写入、删除、post:read、post:delete 等示例......这总是代表“动作”,就像它是一个权限......

我的情况是,我必须实现一个 API,该 API 必须对用户进行身份验证,但限制用户访问仅属于他所属的同一公司的数据,该用户可能属于“N”个公司。

我的想法是使用 Oauth2 作用域来实现该目的,然后在模型中使用 Laravel 雄辩的全局作用域来过滤数据。

我被卡住了,不知道如何继续。谁能给点建议?

【问题讨论】:

  • 除非您特别需要 OAuth,否则只需使用带有 API 令牌的 Sanctumpolicies 来限制访问。

标签: laravel eloquent oauth-2.0


【解决方案1】:

你提到的需求中有2个概念:

  • 范围是表示数据区域和允许对该数据进行操作的高级权限 - 它们也是定义为系统设计一部分的静态值。避免尝试将它们用于动态逻辑。

  • 声明是真正授权发生的地方,也是大多数特定领域授权使用的地方。声明只是 JWT 中包含的额外字段。在您的情况下,可以发出公司 ID 的数组声明并将其包含在 API 接收的 JWT 中。

这两篇 Curity 文章更详细地解释了这一点,并附有一些现实世界的例子。如果做得好,结果应该是您的 API 中的简单代码:

【讨论】:

    猜你喜欢
    • 2022-11-15
    • 2015-08-29
    • 1970-01-01
    • 2011-06-10
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    相关资源
    最近更新 更多