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

Php 模型中的Laravel策略以及如何在特定视图中避免授权。,php,laravel,policies,Php,Laravel,Policies,我会尽力解释的。我正在开发一个电子商务应用程序,为了提供后端授权,我将laravel策略应用于一个模型(产品模型) 当我尝试在前端视图中使用相同的产品模型时,问题就出现了,在前端视图中,所有用户都可以看到产品 无论路由视图是否受保护,策略都应用于所有模型,并且我无法找到在没有授权策略的情况下保留某些视图(例如:前端>列表产品)从模型检索信息的方法 例如:应用于在后端查看的策略的: public function view(User $user) { $method = (string)$

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

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

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

例如:应用于在后端查看的策略的:

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

    }
    return $user->hasRole($this->Model)->$method;
}
我需要的是在产品策略中创建另一个公共函数,该函数在前端列出产品,而无需向用户请求授权


谢谢。

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

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

我希望这有助于为您指明正确的方向。

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

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

我希望这有助于为您指明正确的方向。

谢谢。它解决了部分问题,使用该中间件可以呈现视图,但产品信息(由于策略)无法呈现。谢谢。它解决了部分问题,使用该中间件可以呈现视图,但不能呈现产品信息(因为策略)。