2013-05-15 14 views
11

Ich erstelle eine Anwendung basierend auf Rails und AngularJS. Ich möchte ein Authentifizierungssystem implementieren, indem ich gem Devise verwende. Ich frage mich, wie es geht. Ich habe einige Artikel über das Attribut gelesen: token_authenticatable: Ich werde meinen Token am Ende aller Anfragen setzen müssen, die ich senden werde.Authentifizierung mit AngularJs und Devise Rails, brauche ich ein Tokensystem?

Ich habe auch dieses Demo-Projekt https://github.com/sectore/CafeTownsend-Angular-Rails gelesen Sie haben einen SessionService implementiert, der Server-Sitzung erstellen und löschen kann. (Ich kann Devise für diesen Job verwenden). Im Rails-Controler erhalten sie session [: user_id], um zu wissen, ob der Benutzer authentifiziert ist oder nicht ...

Meine Frage: Benötige ich ein Token-System oder ein Cookies-System, um meine Anfragen zu authentifizieren?

Dank

+0

Ist diese Frage über AngularJS oder Devise? Ich habe sowohl token-und Cookie-basierte Auth mit AngularJS getan und es sieht aus wie Devise unterstützt beide (über Token Authenticatable und Rememberable). – jkoreska

+0

Meine Frage ist, wie man ein gutes Authentifizierungssystem entwickelt, wenn ich angularjs mit Rails als API benutze. Wenn beide Lösungen unterstützt werden, weiß ich nicht. Vielleicht ist die Cookie-basierte einfacher zu implementieren – vpoulain

+2

Cookies sind einfacher, weil der Browser sie automatisch mit jeder Anfrage sendet. Wenn Sie nicht-Browser-Clients unterstützen möchten, sollten Sie mit einem Token umgehen, das in HTTP-Headern übergeben wird - prüfen Sie $ http.defaults.headers.common, um Ihren Token-Header für alle HTTP-Anfragen einzufügen. – jkoreska

Antwort

6

Wenn Ihr Server auf die gleiche Domäne wie Ihr Kunde, dh sein wird: wird erwartet, nur Anfrage von Ihrem Winkel Client, und der Client auf derselben URL wie der Server gehostet wird, dann Sie Cookies über ssl (der Einfachheit halber), EG verwenden sollten:

Ihre Website:

www.myangularsite.com/somepage 

Ihr Server

www.myangularsite.com/someserverfunction 

Sie haben beide die gleiche Domäne.

Wenn Sie jedoch auf, die Ihre Server-Seite auf einer anderen URL, vielleicht als eine API planen, dann gehen Sie mit Token, EG:

Ihre Website:

www.myangularsite.com/somepage 

Ihr Server

api.myangularsite.com/someserverfunction 
or 
myrubyapi.com/someserverfunction 

Die URL-Domäne ist anders.

Verwandte Themen