0

让我告诉你要点。

  1. 我正在使用https://github.com/Zizaco/entrust/的 Entrust
  2. 我正在使用多重身份验证,即我有 2 个webusers卫和表adminadmins
  3. admins表中有具有多个权限的用户(也有角色)。
  4. middelwarepermission有代码

    if (!Auth::guard(' admin')->user()->can(explode('|', $permissions)))

  5. 在我的Admin模型中,我使用了use EntrustUserTrait;

  6. Middelware在我面临的唯一问题permission上运行良好,假设如果任何没有权限,那么写入该块的 html 应该隐藏在刀片文件中。routes.phpAdmin Usercan-create

@permission('can-create') Lorem Ipsum... @endpermission

上述刀片指令未突出显示为 @if 或 @foreach 等。

我认为我正在使用多身份验证,因为 Entrustusers默认使用表。

考虑到这种情况,请赐教。

4

1 回答 1

0

是的,我得到了这个问题的解决方案。请完成我使用的步骤。

  1. 运行命令php artisan make:provider EntrustCustomServiceProvider
  2. app/Providers/EntrustCustomServiceProvider.php
  3. Use Auth;并写在boot函数中

    公共功能引导(){

    \Blade::directive('permission', function($expression) {
        return "<?php if (Auth::guard('admin')->user()->can({$expression})) : ?>";
    });
    
    \Blade::directive('endpermission', function($expression) {
        return "<?php endif; ?>";
    });
    

    }

  4. 在提供者数组中添加此条目config/app.phpApp\Providers\EntrustCustomServiceProvider::class,

还有一件事,很多 phpstorm 用户可能想知道为什么这些指令没有在编辑器中自动填充,那么请注意,每当我们添加自定义刀片指令时,我们都需要在 phpstorm 编辑器的刀片插件中添加这些指令。这是解决方案:

  1. File->settings->php->Blade
  2. 取消选中Default Settings,转到Directives选项卡。
  3. 使用添加新指令+
  4. 输入指令名,这里permission不用@,勾选has parameter
  5. 输入<?php if (Auth::guard('admin')->user()->can(前缀和)):?>后缀
  6. @endpermission添加任何参数也一样。

我希望这对像我这样的人有帮助:)

于 2018-08-13T05:54:29.133 回答