2015-02-23 32 views
8

Trong khi xây dựng SPA của tôi với angularJS, tôi đã đến điểm mà tôi muốn thực hiện xác thực người dùng trong trang web angularJS của tôi. Tuy nhiên, tôi không biết bắt đầu từ đâu và thực hành tốt nhất là gì.AngularJS + Laravel 5 Xác thực

Về cơ bản tôi có chắc chắn rằng có thể có một hoặc nhiều vai trò. Tôi đã tìm kiếm các ví dụ để tôi có thể có được một sự hiểu biết cơ bản về cách xử lý này đúng cách, nhưng cho đến nay tôi đã chỉ đi qua các ví dụ rất đơn giản hoặc không an toàn (như this). Vì vậy, câu hỏi của tôi là, làm cách nào để triển khai dịch vụ xác thực bằng REST (hoặc url API tùy chỉnh) để xác thực người dùng và sau đó hiển thị thông tin người dùng trên trang bằng angularJS, đồng thời đảm bảo mức độ bảo mật tốt nhất bằng cách sử dụng (ví dụ) mã thông báo csrf từ Laravel?

Cảm ơn trước, Nick van der Meij

Trả lời

18

Tôi đang làm một ứng dụng AngularJS và một API RESTful thực hiện với Laravel 5 cho phụ trợ, và cách tiếp cận của tôi cho xác thực là:

  1. Đã cài đặt jwt-auth. Về cơ bản mở rộng mô hình Auth của Laravel thêm ủy quyền với các thẻ.
  2. Đã thêm gói vai trò đơn giản vào laravel. Tôi đã sử dụng permiso. Có nhiều vai trò/người dùng và quyền/vai trò. Rất đơn giản.
  3. Đã thêm jStorage vào giao diện người dùng. (bạn có thể sử dụng mô-đun AngularJS thay thế).

Vì vậy, các bước như sau:

  1. Frontend gửi thông tin người dùng (email và pass).
  2. Kiểm tra máy chủ, jwt-auth tạo mã thông báo cho người dùng đó và gửi lại.
  3. Giao diện người dùng lưu mã thông báo trên bộ nhớ trình duyệt (không cần csrf với phương pháp này).
  4. Tất cả các cuộc gọi bên cạnh các API được thực hiện với Authorization: Bearer tiêu đề (hoặc với ?token=...)
+0

Tôi muốn thực hiện các dạng tương tự, nhưng tôi đã thực hiện các vai trò người dùng và quyền của gói Entrust. @neoroger là nó có thể thực hiện các jwt-auth với Entrust với tất cả người dùng và vai trò cho phép chạy? Bất kỳ sự giúp đỡ nào cũng được đánh giá cao? thnx trước. – Tarunn

8

Tôi thích cách tiếp cận tương tự mà @neoroger mất sử dụng JSON Web Token với JWT-auth. Tôi đã sử dụng gói Satellizer để lưu trữ mã thông báo trên giao diện người dùng và gửi cùng với mỗi yêu cầu tới API sau đó.

Tôi đặt cùng một vài hướng dẫn cho thấy làm thế nào để thực hiện hai gói nếu bạn quan tâm:

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

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

+0

Tôi vừa đọc xong 2 bài báo của bạn và nó đã dạy tôi rất nhiều. Yêu thích cách tiếp cận và giải thích về cách thực hiện nó với JWT giữa Laravel và sử dụng Satellizer cho Angular. Cảm ơn bạn. – Neel

+1

Tuyệt vời! Vui mừng được giúp đỡ. – cienki

+1

:) Tôi có một câu hỏi về cách sử dụng phần mềm trung gian 'jwt.auth' để hạn chế truy cập trên tất cả các bộ điều khiển. Tôi đã thêm rằng vào các ý kiến ​​về bài viết đó.Hôm nay tôi đã chơi xung quanh bản demo hướng dẫn và tôi đã học được rất nhiều về xác thực laravel và jwt thông qua đó. Hướng dẫn tốt nhất tôi đã đọc cho đến nay - không có nghi ngờ! – Neel

Các vấn đề liên quan