Zizaco Entrust Laravel对页面中的每个@权限进行mysql请求。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zizaco Entrust Laravel对页面中的每个@权限进行mysql请求。相关的知识,希望对你有一定的参考价值。

我正在使用Laravel 5.2和Zicaco Entrust来管理权限和角色。

我为用户准备了一个菜单, 我使用laravel blade系统来显示每个菜单部分的@权限, 因为我只在用户有权限的情况下才会显示该菜单部分.

@permission(['upload'])
    <ul class="nav side-menu">
      <li><a><i class="fa fa-home"></i>DB Feed <span class="fa fa-chevron-down"></span></a>
        <ul class="nav child_menu">
          @permission(['file-upload'])
            <li><a href="{!!route('uploadform')!!}">file upload</a></li>
          @endpermission
          @permission(['***-upload'])
            <li><a href="{!!route('***uploadform')!!}">*** upload</a></li>
          @endpermission
          @permission(['***-upload'])
            <li><a href="{!!route('***uploadform')!!}">*** upload</a></li>
          @endpermission
          @permission(['***-upload'])
            <li><a href="{!!route('***uploadform')!!}">*** upload</a></li>
          @endpermission
        </ul>
      </li>
    </ul>
    @endpermission

这样的情况一直持续下去,因为我的菜单部分有大约50个不同的@权限。

现在,当我查看不同的mysql访问时,我可以看到它对DB做了50次相同的请求。

select `roles`.*, `role_user`.`user_id` as `pivot_user_id`, `role_user`.`role_id` as `pivot_role_id` from `roles` inner join `role_user` on `roles`.`id` = `role_user`.`role_id` where `role_user`.`user_id` = '1'
select `permissions`.*, `permission_role`.`role_id` as `pivot_role_id`, `permission_role`.`permission_id` as `pivot_permission_id` from `permissions` inner join `permission_role` on `permissions`.`id` = `permission_role`.`permission_id` where `permission_role`.`role_id` = '1'

我怎样才能改变这种行为,让它只做1次请求?

谢谢.

答案

好吧,看来Laravel的Entrust插件已经不再开发了。我可以通过配置文件中的cache.php文件找到一个解决方案,并添加以下一行。

'ttl' => 30 //In minutes

以上是关于Zizaco Entrust Laravel对页面中的每个@权限进行mysql请求。的主要内容,如果未能解决你的问题,请参考以下文章

Entrust是一种为Laravel5添加基于角色的权限的简洁而灵活的方法。

使用 Zizaco/entrust 包的 `name` 字段的自定义名称

如何修复 laravel 5.2 zizaco 委托:迁移类名验证?

使用composer安装laravel包而不更新依赖项[重复]

[HOOLOO] zizaco/entrust 5.2.x-dev Class name must be a valid object or a string

Entrust - Laravel 用户权限系统解决方案 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub