Rails Devise und devise_token_auth. Nicht zusammen arbeiten

8

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.

    
yaster 09.03.2015, 14:57
quelle

3 Antworten

4

Hinzufügen des folgenden zu app / models / user.rb:

%Vor%

hat es für mich getan. Stellen Sie außerdem sicher, dass der Provider für "Provider" auf "E-Mail" eingestellt ist.

    
Thirdium 11.03.2015 11:09
quelle
0

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.

    
Thirdium 09.03.2015 19:37
quelle
0

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!

    
jmknoll 25.06.2016 08:34
quelle