在主应用程序中使用Clearance验证引擎

时间:2017-07-14 13:56:48

标签: ruby-on-rails ruby authentication rails-engines clearance

上下文

我希望在同一台服务器上运行多个rails应用程序,将它们作为主应用程序中的引擎实现。主应用程序应包含身份验证逻辑,例如用户和角色。

问题

对于我的用户系统,我使用的是许可,但是当我想在其控制器中使用before_action :require_login验证引擎时,我收到以下错误:

ActionController::UrlGenerationError in MyEngine::PagesController#index. No route matches {:action => "new", :controller => "clearance/sessions"}

我理解这是因为引擎正在寻找其命名空间内的间隙控制器,但是如何让引擎在主应用程序中查找呢?是否有一个简单的解决方案,它足够灵活,在向系统添加新引擎时不会有麻烦?

编辑:

我已经尝试通过执行

从主应用程序ApplicationController继承

class ApplicationController < ::ApplicationController

1 个答案:

答案 0 :(得分:0)

您可以跟踪lib/clearance/authorization.rb中的代码以查找要覆盖或配置的方法。

在这种情况下,您似乎要覆盖sign_in_url,以便生成的URL指向您的主机应用。