Ungültige Authentizität Token auf Post
Ich bin mit devise
anmelden/in.
Routen
get 'profile' => 'profile#get_profile'
post 'profile' => 'profile#create_profile'
und profile_controller
def get_profile
render json: {user: current_user}, status: :ok
end
def create_profile
render json: {user: current_user}, status: :ok
end
BEKOMMEN: http://localhost:3000/user/profile liefert die erwartete Ausgabe. Allerdings
POST Anfrage wirft eine Fehlermeldung angezeigt:
ActionController::InvalidAuthenticityToken in User::ProfileController#create_profile
.
Bitte entwirren Sie dieses Verhalten.
Möglich, Duplikat der ActionController::InvalidAuthenticityToken
InformationsquelleAutor Imran | 2015-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deaktivieren
CSRF protection
Sie können IhreApplicationController
wie diese:oder deaktivieren Sie die
CSRF protection
für bestimmte controller::null_session
Strategie leert die session anstatt eine Ausnahme , die ist perfekt für eine API. Weil die session leer ist, können Sie nicht verwendencurrent_user
Methode oder othes Helfer, die sich auf diesession
.WICHTIG:
protect_from_forgery with: :null_session
muss verwendet werden, nur in bestimmtenFällen, zum Beispiel-API-Anfrage (POST/PUT/PATCH/LÖSCHEN) ohne html-Formular
protect_from_forgery with: :null_session
müssen Sie beschränken Sie den Zugriff auf Ihre Daten mit einer Genehmigung system, weil jeder das tun könnte Anfrage gegen Ihre API-Endpunktprotect_from_forgery with: :exception
für Anforderungen, die durch html-Formular, ist gefährlich! (Lesen Sie hier http://guides.rubyonrails.org/security.html#cross-site-request-forgery-csrf)Zu behandeln, sowohl standard-Anfragen (über html-Formular) und API-Anfragen im Allgemeinen haben Sie zwei verschiedene controller für die gleiche Ressource. Beispiel:
Routen
ApplicationController
ProfilesController
(standard-Steuerung für html-Anfragen)
Api::V1::ProfilesController
(controller für API-Anfragen)
refereces:
http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html#method-i-protect_from_forgery
mit: :null_session liefert einen leeren Sitzung, bei jeder Anfrage, oder vielmehr, Sie können nicht
current_user
Methode oder Helfer, die sich auf diesession
, weil es leer ist. Ich bearbeitet meine Antwort zu versuchen zu erklären, besser die verschiedenen Fälle.als NickGnd umrissen hat, und das denke ich, muss hervorgehoben werden: SIE MÜSSEN eine Genehmigung und eine Zulassung in Ort, um sicherzustellen, dass die Schurken-API-post-Anfragen nicht tun können Schäden an Ihrem app.
InformationsquelleAutor NickGnd
Get-Anfragen nicht eine Authentizität token.
Müssen Sie die request forgery Zeug, um Ihre Formulare mit diesem
Und Adresse per javascript
Ich habe es wie du gesagt hast, aber gibt es eine andere Möglichkeit, es zu beheben, weil ich nicht den frontend-Teil.
InformationsquelleAutor Austio
In
ApplicationController
(oder einem anderen controller Ihrem Controller Erben von) gibt es eine Zeile:Entfernen und CSRF-Angriffe überprüft werden deaktiviert.
wie ist die null_session anders aus, entfernen der protect_from_forgery Linie insgesamt?
InformationsquelleAutor Jeiwan