如何在 Spree 扩展中保护控制器,以便只有商店的管理员才能访问它



我正在尝试为 Spree 开发报价扩展,允许客户将文件上传到 AWS S3。

我想通过身份验证"保护"它的一些操作,Spree 为此提供了有用的帮助程序,但我无法让它工作。据我所知,我必须在引号控制器中添加这一行。 include Spree::Core::ControllerHelpers::Auth在我的控制器中,如以下要点所示

不幸的是,我仍然authenticate_user收到未定义的方法错误!

为了保持这个线程干燥,您可以在 Spree 的存储库问题 #5794 上找到更多关于我的问题

任何贡献都是非常受欢迎的。谢谢。

所以我可以删除这个问题,因为它是基于错误的假设,但我更详细地详细说明了我是如何设法解决 QuotesController 的身份验证的

非常感谢@Hates_和Spree IRC中的所有人的回答!

第一个错误的假设是关于报价控制器的设计,它应该分为两部分,一部分用于客户,一部分用于商店管理员后端。第二个错误的假设是,include Spree::Core::ControllerHelpers::Auth不会给我想要的保护。所以这是我最终得到的:

管理端

在Spree中,为了让您的控制器享受商店管理员的"保护",该控制器必须像Spree::Admin::QuotesController < Spree::Admin::BaseController那样继承。这个控制器将生活在app/controllers/spree/admin/quotes_controller.rb.这就是您"保护"它所需要的一切。此外,它将使您的视图很好地集成到商店的后端。

客户方面

根据设计,最好使用不同的命名空间app/controllers/spree/quotes_controller.rb和继承来制作另一个 QuotesController,如下所示:

Spree::QuotesController < Spree:Core::BaseController

相关内容

最新更新