代码之家  ›  专栏  ›  技术社区  ›  s_h

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

  •  0
  • s_h  · 技术社区  · 8 年前

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

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

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

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

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

    我需要的是在product policy中创建另一个公共函数,在不请求用户授权的情况下在前端列出产品。

    谢谢

    1 回复  |  直到 8 年前
        1
  •  2
  •   Donaven Snowden    8 年前

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

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

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

    推荐文章