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"
Другие вопросы по тегам