多次授权授权错误

时间:2017-05-29 09:22:19

标签: laravel laravel-5.4

我的问题是我在Laravel中有多个身份验证,我想要做的是获得此模型App \ Models \ Admin而不是App \ User

的授权

在我的政策中

class AdminsPolicy
{
    use HandlesAuthorization;

    public function view(\App\Models\Admin $admin)
    {
        return in_array($admin->role, [2,3,4]);

    }
}

现在每当我在我的控制器中做这样的事情时

dd(Auth::guard('admin')->user()->can('view'));

即使我的管理员角色正确,它也总是返回

1 个答案:

答案 0 :(得分:1)

通常,Laravel中的策略以某种方式与特定资源相关联。 使用策略时,您必须在AuthServiceProvider中注册它,如此

/**
 * The policy mappings for the application.
 *
 * @var array
 */
protected $policies = [
    Post::class => PostPolicy::class,
];

如您所见,本示例中的策略与Post模型相关联。

如果您想查看,用户是否可以查看'您必须将该模型作为第二个参数传递的特定帖子:

if($user->can('view', $post) { ... }

// or if you don't need a specific instance : 
if($user->can('create', Post::class) { ... } 

也许您实际上正在寻找Gate

您可以在AuthServiceProviders启动函数中定义如下:

    Gate::define('view', function(\App\Models\Admin $admin) {
        return in_array($admin->role, [2,3,4]);
    });