在主应用程序中使用 Clearance 验证引擎
Authenticating engines using Clearance in main app
上下文
我想在同一台服务器上 运行 多个 rails 应用程序,方法是将它们实现为主应用程序中的引擎。主应用程序应包含身份验证逻辑,例如用户和角色。
问题
我正在为我的用户系统使用 Thoughbot 的 clearance,但是当我想通过在其控制器中使用 before_action :require_login
来验证引擎时,我得到了以下错误:
ActionController::UrlGenerationError in MyEngine::PagesController#index. No route matches {:action => "new", :controller => "clearance/sessions"}
我知道这是因为引擎正在其命名空间内寻找间隙控制器,但如何让引擎在主应用程序中查找?有没有一个简单的解决方法,它足够灵活,不会在向系统添加新引擎时造成麻烦?
编辑:
我已经尝试通过
从主应用程序 ApplicationController 继承
class ApplicationController < ::ApplicationController
您可以跟踪 lib/clearance/authorization.rb
中的代码以查找要覆盖或配置的方法。
在这种情况下,您似乎想要覆盖 sign_in_url
,以便生成的 URL 指向您的主机应用。
上下文
我想在同一台服务器上 运行 多个 rails 应用程序,方法是将它们实现为主应用程序中的引擎。主应用程序应包含身份验证逻辑,例如用户和角色。
问题
我正在为我的用户系统使用 Thoughbot 的 clearance,但是当我想通过在其控制器中使用 before_action :require_login
来验证引擎时,我得到了以下错误:
ActionController::UrlGenerationError in MyEngine::PagesController#index. No route matches {:action => "new", :controller => "clearance/sessions"}
我知道这是因为引擎正在其命名空间内寻找间隙控制器,但如何让引擎在主应用程序中查找?有没有一个简单的解决方法,它足够灵活,不会在向系统添加新引擎时造成麻烦?
编辑:
我已经尝试通过
从主应用程序 ApplicationController 继承class ApplicationController < ::ApplicationController
您可以跟踪 lib/clearance/authorization.rb
中的代码以查找要覆盖或配置的方法。
在这种情况下,您似乎想要覆盖 sign_in_url
,以便生成的 URL 指向您的主机应用。