【问题标题】:How to use permissions with Laravel API and Calling Application如何使用 Laravel API 和调用应用程序的权限
【发布时间】:2018-05-26 02:53:45
【问题描述】:

我在 Laravel 中设置了一个 API,使用 Passport 进行身份验证,并使用 spatie/laravel-permission 添加权限功能。我还有一个调用应用程序,也是用 Laravel 编写的。我可以从调用应用程序到 api 进行身份验证,但我如何确保调用应用程序知道可用的权限?用户/角色/权限表在 api 和调用应用程序中应该是什么样子? 本质上,我想在两个应用程序中使用如下代码:$user->can('do something')。

【问题讨论】:

    标签: laravel permissions


    【解决方案1】:

    我对 Spatie 包的理解是,它允许您进行诸如 $user->can('do something') 之类的代码调用,并阅读 Github 页面,它看起来像是在您运行迁移后创建的默认名为“role”和“permission”的表安装软件包。换句话说,正确配置两个应用程序中的模型和数据库连接是一个问题,特别是两个应用程序的用户模型和权限表。

    为了澄清,我想你在问这些问题:

    1. 第二个应用程序如何知道可用的权限,

    2. 您如何能够在两个应用程序中使用“$user->can('do something')”之类的东西,触摸完全相同的数据。

    答案:

    1. 如果“permission”和“role”表已经存在,那么如果您的 API 没有某个端点来请求已经可用的角色或权限,您需要定义一个新的。例如,一些 API 调用询问 Permission 表“getPermissions”或其他东西,而您的第二个应用程序可以调用 - 它要么必须询问数据库本身(通过 API),要么必须从第二个应用程序获取。 这取决于您的两个应用程序如何相互交互
    2. 您必须确保配置第二个应用程序,以便“用户”模型引用与第一个应用程序用于用户模型的表相同的表。本质上,模型被用作表的接口,所以如果两个应用程序都有一个定义的用户模型引用同一个表,并且都配置为连接到表所在的同一个数据库,Laravel 的用户模型将“只知道" 有问题的数据(这是 Laravel Eloquent for Models 的基础)。

    此外,对于它的价值,我没有使用 spatie/laravel-permission 包,但关于问题 #1,我确实在文档中找到了一个函数,该函数也可用于获取列表中当前设置的权限来自“权限表”的表单:

    Permission Model, getPermissions

    作为参考,关于 Laravel 的 Eloquent 和模型(这可能是你已经知道的,但我还是会留下这个链接):

    Laravel Eloquent ORM

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2015-03-24
      • 2018-10-12
      • 1970-01-01
      • 2013-02-07
      • 2022-11-11
      • 2014-12-20
      • 1970-01-01
      • 2012-04-03
      相关资源
      最近更新 更多