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

时间:2017-11-29 18:54:45

标签: php laravel policies

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

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

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

例如:应用于后端View的策略:

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

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

我需要的是在产品政策中创建另一个公共功能,在没有请求用户授权的情况下在前端列出产品。

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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