【发布时间】:2019-12-23 19:03:30
【问题描述】:
我正在使用 Laravel 5.5,我正在尝试使用 Gate 外观来允许管理员访问用户等资源。首先,我在AuthServiceProvider.php 中定义了一个门,如下所示:
Gate::define('view-users', 'App\Policies\UserPolicy@view');
然后,我在 Policy 类中编写 view 方法,如下所示:
public function view(Admin $admin, User $user)
{
return true;
}
并且,我应用如下授权:
//UsersController.php
$user = User::first();
if (Gate::allows('view-users', $user)) {
$users = User::all();
return view('admin.users.list', compact('users'));
}
return abort(403);
我注意到,$user 参数是无用的变量,我不需要它来执行授权。
顺便说一句,当我使用Gate门面的allows()方法时,它总是返回false。而当我改用 denies() 时,这些步骤可以正常工作。
allows() 方法有什么问题?!
但是,对应于 Laravel 文档,我测试了其他通过 middleware()、Model 或 authorize() 应用授权的方法。但是,我得到了相同的结果。
编辑:
我应该注意我正在使用名为 web_admin 的自定义守卫
感谢您的帮助。
【问题讨论】: