Laravel Gate进行授权检查

时间:2017-01-08 07:08:20

标签: php laravel laravel-5 authorization laravel-5.3

我使用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('/');
}

0 个答案:

没有答案