2016-07-17 5 views
0

Ich habe eine Rails-Web, die Cookie-Session-Authentifizierung (Devise) von Anfang an verwendet hat. Jetzt entwickeln wir eine ionische mobile Anwendung, die die API aus der Rails-Anwendung nutzt.Rails Devise Token und Cookie-Sitzung zur gleichen Zeit

Ich habe erwogen, JWT oder Token-Authentifizierung für diese neue Anwendung zu verwenden, aber ich finde keine Möglichkeit, beide Authentifizierungsmethoden, Cookie und JWT zu kombinieren. Außerdem haben beide Anwendungen unterschiedliche Anforderungen. Zum Beispiel kann ein Benutzer im Web nur gleichzeitige Sitzungen haben, wenn er eine bestimmte Rolle hat. Im Gegensatz dazu ist es in der mobilen Anwendung möglich, eine gleichzeitige Sitzung ohne jegliche Einschränkung zu haben.

Ich habe viel zu lesen versucht, wie man beide Methoden kombiniert, aber ich kann den Weg nicht finden. Vielleicht sollte ich überlegen, nur eine der Methoden (JWT) zu verwenden oder einen anderen Ansatz (Türsteher) zu verwenden.

+0

für den mobilen Einsatz können Sie 'token' basierte Authentifizierung und Web wird sitzungsbasierten Authentifizierung folgen, haben Sie einen Controller API machen? – uzaif

+0

Nein, ich würde gerne die gleichen Controller für beide Anwendungen verwenden, wenn möglich. – ReyLitch

+1

Sie können zwei vor_filter Rückruf auf Controller eins für sitzungsbasierte Authentifizierung und einen für tokenbasierte Authentifizierung verwenden – uzaif

Antwort

0

Endlich habe ich eine Lösung gefunden. Nach refaelos und Zac Stewart habe ich das Gerät mit JWT Gem kombiniert, wobei das letzte als eine neue Strategie für das erste verwendet wurde. Auf diese Weise, wenn ich keine JWT-Tokens verwende, wählt Devise die Standardstrategie (in meinem Fall database_authenticatable). Andernfalls wird die JWT-Strategie verwendet.

Wenn der Benutzer jedoch nicht authentifiziert ist und eine Postanforderung an Session # create zum Abrufen der Anmeldeinformationen sendet, ist die von devise/warden gewählte Strategie database_authenticatable. Um dies zu vermeiden, musste ich der Anfrage einen neuen Parameter hinzufügen, aber nur für diesen Fall, weil, wie gesagt, wenn das Token in der Anfrage erscheint, die neue Strategie ausgewählt wird.

Siehe auch:

Verwandte Themen