我正在使用rails构建一个saas引擎。我在帐户#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。
有什么想法吗?
答案 0 :(得分:0)
我看到你正在关注Ryan Bigg关于使用Rails构建多租户应用程序的书。
鉴于此,问题很可能是您需要为您的虚拟应用程序正确设置会话cookie域(默认情况下,它将设置为example.com
)。
因此,如果您在subscribem.dev
(例如通过Pow)运行虚拟应用,那么您可以在spec/dummy/config/initializers/session_store.rb
中设置会话Cookie域,如下所示:
Dummy::Application.config.session_store :cookie_store, key: '_dummy_session', domain: "subscribem.dev"