2012-07-13 10 views
12

Ich habe sowohl eine Desktop-Anwendung und eine mobile Anwendung. Ich möchte die gleiche Rails-Anwendung für beide "Geräte" verwenden. Mit anderen Worten möchte ich, dass die mobile Anwendung Inhalte auf der Desktop-Anwendung anfordert.API und Application Authentifizierung mit Devise, Doorkeeper und OAuth2 Token

Ich benutze Devise für Authentifizierungen (E-Mail + Passwort). Ich habe Doorkeeper auf der Desktop-App implementiert, um ein Oauth2-Token für meine mobile Anwendung zu generieren.

Hier sind meine Fragen:

ich before_filters Sätze in meinem Desktop-Anwendung-Controller, um sie zu sichern haben.

  • Ich bin mir nicht sicher, wie die mobile Anwendung das OAuth2-Token mit Devise teilen sollte, um authentifiziert zu werden und auf meine geschützten Controller zuzugreifen?
  • In der Tat, es ist Doorkeeper, der das mobile Token in meinen Controllern mit dem doorkeeper_for :all Code überprüfen sollte. Aber um das zu tun, muss ich den Schutz des Geräts nicht before_filter :authenticate_user! ...

    Kann ich den oauth Token in Devise auch speichern?

    Ich missverstehe, wie mobile Anwendungen mit Devise und OAuth2-Protokoll authentifizieren sollten?

    Thx

    Antwort

    9

    Das ist alt, hat aber noch keine Antwort.

    Im Wesentlichen machen Devise und Doorkeeper dasselbe, erstellen Authentifizierungen mithilfe von Sitzungen (oder Token-Auth, wenn Sie dies aktiviert haben), während Doorkeeper sich mit OAuth-Token authentifiziert, die bei jeder Anforderung gesendet werden.

    Was Sie wahrscheinlich tun möchten, ist Ihre Anwendung in zwei Access Points zu teilen, haben einen normalen Desktop-Zugriff mit Devise und eine API, die Doorkeeper verwendet. Aktivieren Sie Devise-Routen nur für die normalen Desktop-Controller und aktivieren Sie Doorkeeper-Routen nur für die api-Controller.

    In Ihrem API Application Controller können Sie current_user überschreiben, etwa User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token. Dies entspricht der Art, wie sich Devise authentifiziert.

    Wenn Ihre API nicht OAuth verwenden muss, können Sie alternativ die Token_authenticable-Konfiguration von Devise verwenden, die ähnliche Funktionen wie die Bearer Tokens von OAuth bietet.

    +0

    Warum sollten wir keine tokenbasierte Authentifizierung sowohl auf Desktop- als auch auf Mobilgeräten verwenden? – lakesare

    0

    Ich bin mir nicht sicher, ob ich in deine Frage aber Pförtner sperrt der Controller verstanden. Kein Zugriff über die Devise-Authentifizierung ist möglich, wenn Sie doorkeeper_for :all in Ihrem Controller haben.

    Sie benötigen einen separaten Controller, um Ihre Daten über OAuth2 zu teilen, zum Beispiel einen API-Controller. Dann können Sie Daten z.B. über protocol://myapp:1234/ressource?access_token=thetoken.

    Haben Sie danach gefragt? Sonst bitte klären :)

    Verwandte Themen