ActionController::InvalidAuthenticityToken в Rails Engine
Я строю двигатель Saas в рельсах. Я сталкиваюсь со следующей ошибкой в методе account#create (используется гем warden):
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
to:null_session ошибка исчезает, но я думаю, что это неправильное решение для этой проблемы, поскольку пользователь должен войти в систему после этого действия регистрации, а он: null_session только для API.
Сайт также не создает куки для пользователя, который регистрируется, что кажется неправильным.
Есть идеи?
1 ответ
Я вижу, что вы читаете книгу Райана Бигга о создании приложений Multitenant с 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"