我会尽力解释。我正在开发电子商务应用程序,为了提供后端授权,我将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;
}
我需要的是在产品政策中创建另一个公共功能,在没有请求用户授权的情况下在前端列出产品。
感谢。
答案 0 :(得分:1)
您可能希望在控制器中创建一个构造函数,允许未经过身份验证的用户访问产品视图。以下代码段提供对除控制器(会话销毁,注销)功能之外的控制器中每个功能的访问。
public function __construct()
{
$this->middleware('guest', ['except' => 'destroy']);
}
我希望这有助于指明你正确的方向。