2015-02-23 4 views
8

При создании моего SPA с angularJS я подошел к точке, где я хочу реализовать аутентификацию пользователя на моем сайте angularJS. Тем не менее, я понятия не имею, с чего начать и какие лучшие практики.AngularJS + Laravel 5 Аутентификация

В принципе у меня есть уверенность, что у вас может быть одна или несколько ролей. Я искал примеры, поэтому я мог бы получить базовое представление о том, как правильно это обрабатывать, но пока я натолкнулся на примеры, которые очень просты или не настолько безопасны (например, this).

Таким образом, мой вопрос заключается в том, как реализовать службу аутентификации с использованием REST (или пользовательских URL-адресов API) для аутентификации пользователя, а затем отобразить информацию пользователя на странице с помощью angularJS, а также обеспечить лучший уровень безопасности при использовании (например) токен csrf от Laravel?

Спасибо заранее, Ник ван дер Meij

ответ

18

Я делаю AngularJS приложение и API RESTful сделанный с Laravel 5 для внутреннего интерфейса, и мой подход к аутентификации был:

  1. Установлено jwt-auth. В основном расширяет Auth-модель Laravel, добавляя авторизацию с токенами.
  2. Добавлен простой пакет ролей для laravel. Я использовал permiso. Имеет несколько ролей/пользователей и разрешений/роли. Очень просто.
  3. Добавлен jStorage в интерфейс. (вместо этого вы можете использовать модуль AngularJS).

Так шаги:

  1. Frontend отправить учетные данные (адрес электронной почты и передать).
  2. Проверка сервера, jwt-auth делает маркер этому пользователю и отправляет его обратно.
  3. Frontend сохранить токен в хранилище браузера (без этого подхода не требуется csrf).
  4. Все последующие вызовы API производятся с Authorization: Bearer заголовком (или с ?token=...)
+0

Я хочу реализовать тот же формат, но я уже реализован роли пользователя и разрешения с помощью пакета Entrust. @neoroger можно реализовать jwt-auth с Entrust с запуском всех прав пользователя и роли? Любая помощь высоко ценится? thnx заранее. – Tarunn

8

мне нравится один и тот же подход, который @neoroger берет с использованием JSON веб-токенов с JWT-AUTH. Я использовал пакет Satellizer для хранения токена на лицевой стороне и затем отправил его вместе с каждым запросом в API.

я собрал пару учебников, которые показывают, как реализовать два пакета, если вы заинтересованы:

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

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

+0

Я только что закончил читать ваши 2 статьи, и это научило меня так много. Полюбите подход и объяснение того, как это сделать с JWT между Laravel и использованием Satellizer for Angular. Спасибо. – Neel

+1

Удивительный! Рад помочь. – cienki

+1

:) У меня есть вопрос о том, как использовать промежуточное программное обеспечение 'jwt.auth' для ограничения доступа ко всем контроллерам. Я добавил это к комментариям к этой статье.Сегодня я играл вокруг учебной демонстрации, и я так много узнал об аутентификации laravel и jwt. Лучший учебник, который я прочитал до сих пор - без сомнения! – Neel

Смежные вопросы