laravel5.5权限管理Zizaco/entrust在路由注册报错问题

Laravel 111℃ 0评论

laravel5.5权限管理Zizaco/entrust在路由注册报错问题

踩了一下午的坑,我就给大家分享出来,让大家少落入由于在laravel5.1时候用Zizaco/entrust库作为权限角色管理非常的可用,所以我就套用5.1的用法,没想到报错了。。。。

app\Providers\RouteServiceProvider 注册权限管理路由约束

public function register()
    {
        // 增加路由需要对应的权限
        $filters = [
            'manager/users*' => 'users.manage',
            'manager/designers*' => 'users.designers',
        ];
        foreach ($filters as $route => $filter) {
             \Route::filter($filter, function() use ($filter) {
                $user = app('admin')->user();

                if (!$user) {
                    return;
                }

                if ((!$user->isSuper && !$user->can($filter))) {
                    abort(403);
                }
            });
            \Route::when($route, $filter);
        }
    }

以上写法是没有问题的根据Zizaco/entrust这个库提供的方法
https://github.com/Zizaco/entrust

laravel5.5 就会报错

InvalidArgumentException
Attribute [filter] does not exist.

根据报错的信息找到文件
vendor/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php

找到问题了。从而知道原来是不能这样验证了,具体为什么laravel5.5不允许了,不知道为什么。

解决方案

就是不采用路由注册的方式了。采用移除 Zizaco/entrust 这库支持的其他验证,例如在controller验证,

转载请注明:码农宅 » laravel5.5权限管理Zizaco/entrust在路由注册报错问题

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址