我使用Gate进行laravel授权,其中用户有一个角色,一个角色有多个权限。我使用以下方法检查角色是否拥有权限。但它不能正常工作意味着用户可能有机会访问一条路线,虽然我通过角色给了他多个权限。 看情况假设管理员可以看到用户列表以及访问测试路由。但在我的情况下,管理员可以看到用户列表,但他无法访问测试路由。虽然我在权限表中给了他访问权限。
有人能说出这里有什么问题吗?
public function boot(GateContract $gate)
{
$this->registerPolicies();
foreach ($this->getPermissions() as $permission) {
$gate->define($permission->name, function ($user) use ($permission) {
return $user->role->id === $permission->role_id;
});
}
}
public function getPermissions()
{
return Permission::with('role')->get();
}
在控制器代码中:
public function test(){
if(Gate::allows('test')){
echo "This is Test";
}
return redirect('/');
}