【问题标题】:Rails devise with scope fails with InvalidAuthenticityToken具有范围的 Rails 设计因 InvalidAuthenticityToken 而失败
【发布时间】:2015-07-09 05:38:06
【问题描述】:

我们使用的是 Rails 4.2.1 和最新版本的 Devise (3.4.1),尽管我相信其他版本也会出现同样的错误。

自从我们将范围添加到 routes.rb:

scope '/admin' do

  root to: "places#index"

  devise_for :users, controllers: { registrations: "users/registrations" }

...

Devise 无法登录或退出并出现以下错误:

ActionController::InvalidAuthenticityToken at /admin/users/sign_out.

只要我们移除范围,一切都会正常工作。

我们尝试使用带有设计的自定义路线,但没有任何帮助。


registrations_controller.rb


class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_permitted_parameters

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up).push(:first_name, :last_name, :organization)
  end
end

【问题讨论】:

  • Sei,你能分享你的自定义 users/registrations_controller.rb 文件吗?这可能有助于发现问题。
  • 即使我们从路由文件中删除 users/registrations_controller.rb 我们仍然会得到同样的错误。谢谢!

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


【解决方案1】:

您应该尝试如下定义您的设计范围:

devise_for :users 
devise_scope :user do
  scope '/admin' do
    get "/your_route" ...
  end
end

对于其余的路由分别应用“/admin”范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多