【问题标题】:Rails - Disable "already_authenticated" redirect in DeviseRails - 在设计中禁用“already_authenticated”重定向
【发布时间】:2013-11-26 02:38:26
【问题描述】:

我需要我的 Rails 应用程序只允许具有 :admin 的用户能够访问 sign_up 页面并添加用户。但是,如果有人登录(管理员或其他方式),Devise 会重定向他们并显示绑定到 already_authenticated 错误的“已经登录”消息。

我知道还有其他更强大的方法可以解决这个问题,比如创建一个新的控制器来覆盖 Devise 中的标准控制器,但是因为我对 Rails 还很陌生,而且我目前的需求很小,我只是想禁用“already_authenticated”完全重定向。然后,我可以轻松地在 sign_up 页面的顶部添加一个“if”语句,以阻止普通用户进入,但仍然让具有 :admin 属性的用户通过。我可以对 sign_in 页面做同样的事情,并以“if signed_in?”开头。查询以查看用户当前是否已登录并根据需要自行重定向。简单易懂(我认为)。

我一直在翻阅 Devise 文档及其 lib 文件,但无法准确定位处理此重定向的确切位置,如果这确实是它正在做的事情的话。

感谢您的任何帮助,并提前感谢您。

【问题讨论】:

    标签: ruby-on-rails ruby devise ruby-on-rails-4


    【解决方案1】:

    重定向在这里:https://github.com/plataformatec/devise/blob/master/app/controllers/devise/sessions_controller.rbhttps://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb

    prepend_before_filter :require_no_authentication, :only => [ :new, :create ]

    正如您从源代码中看到的,无法使用配置选项禁用它。唯一的方法是覆盖适当的控制器。

    【讨论】:

    • 感谢您的回复 - 通过复制和粘贴控制器的内容(在进行编辑后)并重新路由它们,我设法让我所需的功能完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多