Ich habe eine Rails 4.1-Anwendung mit Devise zur Authentifizierung ausgeführt.
Für den Zugriff über mobile Apps möchte ich Tokenauth mit dem empfohlenen "devise_token_auth" -Element implementieren. Ich benutze Omniauth nicht
Die Funktionalität der bestehenden App sollte nicht verändert werden.
Was ich getan habe:
Installierte devise_token_auth via gemfile.
Benutzte den Generator: rails g devise_token_auth: installiere User auth
Die Migration wurde geändert, um die erforderlichen Felder hinzuzufügen. Migration fehlgeschlagen wegen Omniauth fehlt. Also habe ich es auch installiert.
Geändert routes.rb
%Vor%hinzugefügt:
%Vor%Ende
Im Benutzermodell habe ich:
%Vor%Wenn ich jetzt versuche, einen neuen Benutzer zu signieren, gibt es den Validierungsfehler:
Uid darf nicht leer sein
Hat jemand das gleiche Problem und hat es gelöst?
Was ich seltsam finde ist, dass Omnium installiert sein muss.
Aktualisierung:
Ich überschreibe die Devize Registrierung Controller erstellen Aktion:
%Vor%Wenn ich jetzt sign_in bekomme, bekomme ich:
{"Fehler": ["Nur autorisierte Benutzer."]}
im Browser.
Nun, ich kämpfe gerade mit der gleichen Sache. Ich versuche, devise_token_auth
zu Devise hinzuzufügen, und es funktioniert nicht so weit für mich.
Soweit geht das, sprechen Sie über "sign_up" für Devise oder devise_token_auth
? Wenn es um Devise geht, würde ich annehmen, dass uid=email
vor dem Erstellen des Datensatzes gesetzt wurde, um dies zu lösen.
Dieser Fehler wird von devise_token_auth, nicht von devise ausgelöst. Im Wesentlichen versucht devise_token_auth, Ihre normalen Entwicklungsrouten auf die gleiche Weise zu authentifizieren, wie es normalerweise eine API-Anfrage authentifizieren würde. Ihre normalen Entwicklungsrouten authentifizieren sich über die Sitzung, nicht über das Token, daher erhalten Sie diesen Fehler:
%Vor%Es gibt ein paar Dinge, die hier passieren könnten. Stellen Sie zunächst sicher, dass Sie nur nach einer Token-Validierung für die Aktionen Ihrer API-Controller suchen. Stellen Sie also sicher, dass diese Zeile in Ihrem BaseAPIController und nicht in Ihrem ApplicationController enthalten ist.
%Vor%Die andere Möglichkeit besteht darin, dass Sie in Ihren routes.rb einige Probleme mit dem Namespacing haben. Stellen Sie sicher, dass Sie so etwas haben. Sie müssen zuerst devise_for haben, und token_auth muss den Namespaced-Wert korrekt angeben oder es werden Validierungsfehler auf Ihren anderen Routen verursacht.
%Vor%Viel Glück!
Tags und Links ruby-on-rails authentication devise token