Laravel策略来宾用户

时间:2019-05-24 12:47:16

标签: php laravel

我有以下政策:

<?php

namespace App\Policies;

use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;

class EventPolicy
{
    use HandlesAuthorization;

    /**
     * Determine whether the user can view the whole model.
     *
     * @param User $user
     * @return boolean
     */
    public function list(?User $user) {
        return true;
    }

}

AuthServiceProvider包含正确的绑定:

protected $policies = [
    Event::class => EventPolicy::class,
];

在我的控制器中:

public function index() {
    $this->authorize('list');
    return $this->repository->paginate();
}

这将返回403禁止  回应:

This action is unauthorized.

Laravel文档指出,您可以使用户声明User是可选的,也可以设置默认的null值。我都尝试都无济于事。

我正在运行v5.8

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这可能是Laravel的内部不当行为,因为逻辑在某种程度上被破坏了(这只是一个假设)。

在这种情况下,由于任何人都可以看到结果,因此您不应添加任何用于列出的授权策略。

所以您应该简单地这样做:

public function index()
{
    return $this->repository->paginate();
}

仅在应授权用户做某事时定义策略。

稍后编辑:是否有可能在服务提供商中从Laravel而非事件模型导入了Event类?