Pracowałem nad nową aplikacją Rails 4 (na Ruby 2.0.0-p0), kiedy napotkałem pewne problemy z tokenami autentyczności.
Podczas pisania kontrolera, który reaguje na json (przy użyciu respond_to
metody klasy), doszedłem do create
akcji, w której zacząłem uzyskiwać ActionController::InvalidAuthenticityToken
wyjątki, gdy próbowałem utworzyć rekord za pomocą curl
.
Upewniłem się, że ustawiłem -H "Content-Type: application/json"
i ustawiłem dane, -d "<my data here>"
ale nadal nie miałem szczęścia.
Próbowałem napisać ten sam kontroler przy użyciu Rails 3.2 (na Ruby 1.9.3) i nie dostałem żadnych problemów z tokenem autentyczności. Rozejrzałem się i zobaczyłem, że w Railsie 4 wprowadzono pewne zmiany dotyczące tokenów autentyczności. Z tego, co rozumiem, nie są już one automatycznie wstawiane do formularzy? Przypuszczam, że to w jakiś sposób wpływa na typy treści inne niż HTML.
Czy jest jakiś sposób na obejście tego bez konieczności żądania formularza HTML, wyłapywania tokena autentyczności, a następnie wysyłania kolejnego żądania z tym tokenem? A może zupełnie brakuje mi czegoś, co jest całkowicie oczywiste?
Edycja: Właśnie próbowałem utworzyć nowy rekord w nowej aplikacji Rails 4 przy użyciu rusztowania bez zmiany czegokolwiek i napotykam ten sam problem, więc chyba nie zrobiłem tego.