Php 对于laravel策略,Authorize或can方法始终返回false

Php 对于laravel策略,Authorize或can方法始终返回false,php,laravel,authorization,voyager,Php,Laravel,Authorization,Voyager,我在拉雷维尔制定政策时遇到了麻烦。我使用的是与Laravel策略概念集成的Laravel voyager管理面板。我已经为内容模型创建了策略,并将其分配给内容包。为了检查结果,我只是在view函数中返回true。然而,它仍然返回false 以下是ContentPolicy类的一个片段: /* * Determine whether the user can view the content. * * @param \App\User $user

我在拉雷维尔制定政策时遇到了麻烦。我使用的是与Laravel策略概念集成的Laravel voyager管理面板。我已经为内容模型创建了策略,并将其分配给内容包。为了检查结果,我只是在view函数中返回true。然而,它仍然返回false

以下是ContentPolicy类的一个片段:

    /*
     * Determine whether the user can view the content.
     *
     * @param  \App\User  $user
     * @param  \App\Content  $content
     * @return mixed
     */
    public function view(User $user, Content $content)
    {
        return true;
    }
在ContentController中:

    public function view(Request $request)
    {
        $content=Content::all();

        return var_dump($this->authorize("view",$content));
    }
我在这里登记了我的保单

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
        Content::class => ContentPolicy::class

    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
        Passport::routes();

        //
    }
}
值得注意的是,“browse_admin”在这种情况下对laravel voyager很有效

我感谢你的帮助。提前感谢

基于此,您应该在
AuthServiceProvider
中注册您的策略,如下所示:

基于此,您应该在
AuthServiceProvider
中注册策略,如下所示:


您是否将
放在您的保单中的
方法之前?如果是,请将其删除。

您是否将
放在您的保单中的
方法之前?如果是,请将其删除。

我遇到了同样的问题并解决了它,您需要将其添加到您的保单中,这是Voyager检查的内容


    public function browse(){
        return true;
    }
    
    public function add(){
        return true;
    }

    public function delete(){
        return true;
    }

    public function edit(){
        return true;
    }

    public function read(){
        return true;
    }

我也遇到了同样的问题并解决了它,您需要将此添加到您的策略中,这是Voyager检查的内容


    public function browse(){
        return true;
    }
    
    public function add(){
        return true;
    }

    public function delete(){
        return true;
    }

    public function edit(){
        return true;
    }

    public function read(){
        return true;
    }

您是否已在
AuthServiceProvider
中添加了策略?请检查。感谢您的回复,我这样做了,但它不起作用。您是否在
AuthServiceProvider
中添加了策略?请检查。谢谢您的回复,我这样做了,但它不起作用。您是否正在尝试验证用户?默认情况下,如果传入的HTTP请求不是由经过身份验证的用户发起的,则所有门和策略自动返回false“权限,但不使用自行创建的策略您是否尝试使用经过身份验证的用户?默认情况下,如果传入的HTTP请求不是由经过身份验证的用户发起的,则所有门和策略将自动返回false。是的,我对经过身份验证的用户执行此操作,它使用“browse_admin”权限,但不使用自行创建的策略