0

我正在 Rails 中构建一个 saas 引擎。我在 account#create 方法上遇到以下错误(使用了warden gem):

ActionController::InvalidAuthenticityToken in Subscribem::AccountsController#create
ActionController::InvalidAuthenticityToken

Rails.root: /home/jma/Documents/subscribem/spec/dummy

Application Trace | Framework Trace | Full Trace
Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"x5sWQF8eRjwD/fcbdI+MJ1Y1gg7u2x7QvCoN3h1/1UM=",
 "account"=>{"name"=>"test",
 "subdomain"=>"test",
 "owner_attributes"=>{"email"=>"jan@ma.de",
 "password"=>"[FILTERED]",
 "password_confirmation"=>"[FILTERED]"}},
 "commit"=>"Create Account"}

我的应用程序控制器如下所示:

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
    protect_from_forgery with: :exception
end

当更改protect_from_forgery with: :exception为 :null_session 时,错误消失了,但我认为这不是解决此问题的正确方法,因为用户应该在此注册操作后登录,而 :null_session 仅适用于 API。

该网站也没有为正在注册的用户创建任何似乎不正确的 cookie。

有任何想法吗?

4

1 回答 1

0

我看到您正在关注 Ryan Bigg 关于使用 Rails 构建多租户应用程序的书。

鉴于此,问题很可能是您需要为您的虚拟应用程序适当地设置会话 cookie 域(默认情况下它将设置为example.com)。

因此,如果您在subscribem.dev(例如通过 Pow)运行您的虚拟应用程序,那么您将设置您的会话 cookie 域,spec/dummy/config/initializers/session_store.rb如下所示:

Dummy::Application.config.session_store :cookie_store, key: '_dummy_session', domain: "subscribem.dev"
于 2015-09-25T14:47:46.953 回答