【问题标题】:Authenticating engines using Clearance in main app在主应用程序中使用 Clearance 对引擎进行身份验证
【发布时间】:2017-07-14 13:56:47
【问题描述】:

上下文

我想在同一台服务器上运行多个 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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我是引擎新手,并且在命名空间以及如何覆盖/更改功能方面苦苦挣扎。这足以找到解决方案☺
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2019-01-30
    • 2014-12-19
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多