Irgendeine Idee, wie ich gehen würde, haben einen Schienen-REST-Webservice, in dem ein Benutzer nur ihre eigenen Daten nur erhalten, setzen, posten, löschen kann? Ich benutze Devise als mein Benutzer-Authentifizierungs-Juwel, aber ich bin mir nicht sicher, ob dies die Dinge in einer REST-freundlichen Weise behandelt.
Wie kann ich sicherstellen, dass der Benutzer "eingeloggt" ist und seine Daten ändern kann? Muss ich bei jeder Anfrage eine Art Token herumreichen?
Devise stellt Ihnen nur eine Authentifizierung zur Verfügung. Dies bedeutet, dass Sie ein gewisses Maß an Sicherheit haben, dass der Benutzer identifiziert wird und wer er / sie sagt, er / sie ist. Anhand dieser Informationen können Sie mithilfe von Rails-Mechanismen oder anderen Rails-Objekten (d. H. CanCan, Aegis, declarative_authorization) Benutzer autorisieren und Berechtigungen definieren.
Eine einfache Methode wäre die Verwendung eines before_filter
auf Ihrem fraglichen Controller, um festzustellen, ob zum Beispiel ein BlogPost
zu dem angemeldeten Benutzer gehört.
Hier ist ein einfaches Beispiel, was ich meine:
%Vor% Die is_user_allowed
-Methode ruft die BlogPost
ab, die abgefragt wird, und bestimmt, ob die current_user
die Aktion ausführen darf, indem sie die Benutzer-IDs vergleicht. Wenn die Ungleichheit wahr ist, wird sie auf unser berüchtigtes access_denied_page_path
umgeleitet.
Weitere Informationen zu Filtern finden Sie in diesem Edge-Guides-Artikel .
Weitere Informationen zu Rails-Steinen, die Ihnen diese Funktionalität bieten (und more ), werfen Sie einen Blick auf Google und suchen Sie nach rails authorization
. Außerdem, hier sind einige Railscasts, die einen Einblick geben sollten:
Sehen Sie sich AuthLogic single_access_token an. Es wurde für die Authentifizierung von REST-APIs entwickelt.
Tags und Links ruby-on-rails restful-authentication rest