Laravel 模型中的策略以及如何避免特定视图中的授权。

Laravel Policies in Model and how to avoid authorization in particular views.

我会尽力解释。我正在开发电子商务应用程序,为了提供后端授权,我将 laravel 策略应用于模型(产品模型)。

问题出在我尝试在前端视图中使用相同的产品模型时,所有用户都可以在前端视图中看到这些产品。

无论路由视图是否受到保护,策略都会应用于所有模型,我无法找到离开某些视图(例如:前端>列表产品)的方法,从没有授权策略的模型中检索信息。

例如:应用于后端视图的策略:

public function view(User $user)
{
    $method = (string)$this->ability;
    if ($user->hasRole($this->Model) === null) {
        return 0;

    }
    return $user->hasRole($this->Model)->$method;
}

我需要在产品策略中创建另一个 public 函数,在不请求用户授权的情况下在前端列出产品。

谢谢。

您可能希望在您的控制器中创建一个构造函数,以允许未经身份验证的用户访问产品视图。以下代码段提供了对控制器中除 destroy (session destroy, logout) 函数之外的每个函数的访问。

public function __construct()
{
    $this->middleware('guest', ['except' => 'destroy']);
}

我希望这能帮助您指明正确的方向。