如何使用Laravel API和调用应用程序的权限

时间:2017-12-12 12:10:26

标签: laravel permissions

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

1 个答案:

答案 0 :(得分:0)

我对spatie包的理解是它允许你进行这样的代码调用" $ user->可以('做某事')",并且阅读github页面看起来它创建了默认名为" role"和#34;许可"安装程序包后运行迁移时。换句话说,这是在两个应用程序中正确配置模型和数据库连接的问题,特别是两个应用程序的用户模型和权限表。

此外,我认为您要问两件事,但是,如果我不理解您的问题,请完全纠正我!目标是帮助而不是回答:))

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

问题2你如何能够使用" $ user->这样的东西('做某事')"在两个应用程序中,触摸完全相同的数据。

  1. 如果"许可"和#34;角色"表已经存在,那么如果您的API没有某个端点来询问已有的角色或权限,那么您需要定义一个新的。例如,某些API调用会询问Permission表" getPermissions"或者你的第二个应用程序可以调用的东西 - 要么必须询问数据库本身(通过API),要么必须从第二个应用程序获取。 这取决于您的两个应用程序如何相互交互
  2. 您必须确保配置第二个应用程序,以便"用户" model指的是与第一个应用程序用于User模型的表相同的表。本质上,该模型被用作表的接口,因此如果两个应用程序都具有引用相同表的已定义用户模型,并且两者都配置为连接到表所在的同一数据库,则Laravel的用户模型将"只知道"有问题的数据(这是Laravel's Eloquent for Models的基础)。
  3. 此外,对于它的价值,我还没有使用过spatie / laravel-permission软件包,但就问题#1而言,我确实在文档中找到了一个也可能用于从"权限表"

    中获取列表形式的当前权限

    Permission Model, getPermissions

    作为参考,关于Laravel的Eloquent和Models(可能是你已经知道的东西,但无论如何我都会留下这个链接):

    Laravel Eloquent ORM