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']);
}
我希望这能帮助您指明正确的方向。
我会尽力解释。我正在开发电子商务应用程序,为了提供后端授权,我将 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']);
}
我希望这能帮助您指明正确的方向。