0

Я строю двигатель сааса в рельсах. Я бегу в следующее сообщение об ошибке на счете # метод создания (используется Надзиратель камень):ActionController :: InvalidAuthenticityToken in Rails Engine

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"=>"[email protected]", 
"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.

Сайт также не создает куки для пользователя, который подписывается, что кажется неправильным.

Любые идеи?

ответ

0

Я вижу, что вы следуете за книгой Райана Бигга по созданию многопользовательских приложений с 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" 
Смежные вопросы