【问题标题】:Laravel Policy Guest UserLaravel 政策访客用户
【发布时间】:2019-10-11 01:52:39
【问题描述】:

我有以下政策:

<?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 Forbidden 回复:

This action is unauthorized.

Laravel 文档声明您可以让用户声明 User 可选或设置默认的 null 值。两种方法都试过了。

我正在运行v5.8

有什么想法吗?

【问题讨论】:

  • 你用的是什么 laravel 版本?似乎在 5.7+ 中添加了访客用户授权
  • 我使用的是 5.8 版

标签: php laravel


【解决方案1】:

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

在这种特殊情况下,您不应该为列表添加任何授权策略,因为每个人都可以看到结果。

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

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

仅当用户真正被授权做某事时才定义策略。

稍后编辑:是否有可能在服务提供者中您从 Laravel 导入了 Event 类而不是 Event 模型?

【讨论】:

    猜你喜欢
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2021-06-05
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多