2015-02-23 22 views
8

Während ich mein SPA mit angularJS erstellte, kam ich an den Punkt, an dem ich die Benutzerauthentifizierung auf meiner angularJS-Website implementieren möchte. Ich habe jedoch keine Ahnung, wo ich anfangen soll und was die besten Praktiken sind.AngularJS + Laravel 5 Authentifizierung

Grundsätzlich habe ich eine sichere, die eine oder mehrere Rollen haben kann. Ich habe nach Beispielen gesucht, um ein grundlegendes Verständnis dafür zu bekommen, wie ich damit richtig umgehen kann, aber bis jetzt bin ich nur auf Beispiele gestoßen, die sehr einfach oder nicht so sicher sind (wie this).

Also meine Frage ist, wie ich einen Authentifizierungsdienst mit REST (oder benutzerdefinierte API URLs) implementieren, um einen Benutzer zu authentifizieren, und dann die Benutzerinformationen auf der Seite mit angularJS anzuzeigen, während auch die beste Sicherheitsabdeckung durch (zum Beispiel) der csrf-Token von Laravel?

Vielen Dank im Voraus, Nick van der Meij

Antwort

18

ich eine AngularJS App mache und eine API RESTful gemacht mit Laravel 5 für das Backend, und mein Ansatz für die Authentifizierung war:

  1. Installiert jwt-auth. Grundsätzlich erweitert das Auth-Modell von Laravel Autorisierung mit Tokens.
  2. Einfaches Rollenpaket zu Laravel hinzugefügt. Ich habe permiso verwendet. Hat mehrere Rollen/Benutzer und Berechtigungen/Rolle. Sehr einfach.
  3. jStorage zum Frontend hinzugefügt. (Sie können stattdessen AngularJS-Modul verwenden).

So sind die Schritte:

  1. Frontend Benutzerdaten (E-Mail und übergeben) schicken.
  2. Server prüft, jwt-auth erstellt für diesen Benutzer ein Token und sendet es zurück.
  3. Frontend speichert das Token im Browser-Speicher (kein csrf benötigt bei diesem Ansatz).
  4. Alle nächsten Aufrufen der API sind mit Authorization: Bearer Header (oder mit ?token=...)
+0

ich das gleiche Format umsetzen wollen, aber ich habe implementiert bereits Benutzerrollen und Berechtigungen von Entrust-Paket. @neoroger ist es möglich, die jwt-auth mit Entrust zu implementieren, wenn alle Benutzer- und Rollenrechte laufen? jede Hilfe wird sehr geschätzt? thnx im Voraus. – Tarunn

8

Ich mag den gleichen Ansatz gemacht, die @neoroger mit jwt-Auth mit JSON Web Tokens nimmt. Ich habe das Satellizer-Paket verwendet, um das Token am Frontend zu speichern und es anschließend mit jeder Anfrage an die API zu senden.

ich zusammen ein paar Tutorials, die zeigen, wie die beiden Pakete zu implementieren, wenn Sie interessiert sind:

https://scotch.io/tutorials/token-based-authentication-for-angularjs-and-laravel-apps

http://ryanchenkie.com/token-based-authentication-for-angularjs-and-laravel-apps/

+0

Ich habe gerade Ihre 2 Artikel gelesen und es hat mir so viel beigebracht. Ich liebe den Ansatz und die Erklärung, wie man es mit JWT zwischen Laravel und Satellizer für Angular macht. Vielen Dank. – Neel

+1

Super! Froh, dass ich Helfen kann. – cienki

+1

:) Ich habe eine Frage, wie man 'jwt.auth' Middleware verwendet, um den Zugriff auf alle Controller zu beschränken. Ich habe das zu den Kommentaren zu diesem Artikel hinzugefügt.Heute habe ich die Tutorial Demo gespielt und ich habe so viel über Laravel und JWT Authentifizierung gelernt. Bestes Tutorial, das ich bisher gelesen habe - kein Zweifel! – Neel