Làm cách nào để tạo auth trong Laravel 5?

ấu trùng 5. 6 — Tùy chỉnh Auth mặc định [Phần 1]. Kích hoạt tài khoản sau khi đăng ký bằng Laravel Notification

Laravel cung cấp Basic Authentication ngay lập tức bao gồm các chức năng đăng nhập, đăng ký và đặt lại mật khẩu cơ bản. Các chức năng này có thể dễ dàng tùy chỉnh. Đây là vẻ đẹp của khung Laravel. Trong hướng dẫn này, chúng ta sẽ tùy chỉnh chức năng đăng ký cơ bản của Laravel và chức năng kích hoạt tài khoản sau khi đăng ký người dùng

Vì vậy, hãy bắt đầu với một bản cài đặt mới của Laravel

Hãy thực hiện một số thay đổi trong quá trình di chuyển của bảng người dùng

Tiếp theo, chúng ta cần tạo Auth Scaffolding do Laravel cung cấp, sử dụng lệnh sau trên thiết bị đầu cuối của chúng ta

$ php artisan make:auth

Laravel tạo thư mục Auth với các bộ điều khiển sau

Bộ điều khiển được tạo bởi Laravel

Laravel tự động cập nhật ‘tuyến/web. php' và thêm

Auth::routes[];

Chúng ta có thể kiểm tra danh sách các route mới bằng lệnh

$ php artisan route:list

Danh sách tuyến đường

Chúng tôi quan tâm đến việc tùy chỉnh hệ thống Đăng ký. Vì vậy, chúng tôi sẽ cập nhật RegisterController. php. Chúng tôi đang triển khai Thông báo Laravel, vì vậy hãy tạo một thông báo mới bằng cách sử dụng lệnh sau trên thiết bị đầu cuối

php artisan make:notification UserRegisteredSuccessfully

Lệnh này tạo một lớp thông báo mới cho chúng tôi, bên trong thư mục 'Ứng dụng/Thông báo'. Hãy chỉnh sửa UserRegisteredSuccessfully. php

Chúng tôi cần xác định, một tuyến đường mới để xác thực/kích hoạt tài khoản với tuyến đường được đặt tên là 'kích hoạt. user’ được sử dụng trong lớp Thông báo [dòng số 55 ở trên]

Trong các tuyến đường/web của chúng tôi. php

$this->get['/verify-user/{code}', 'Auth\RegisterController@activateUser']->name['activate.user'];

Bây giờ, hãy chỉnh sửa RegisterController của chúng tôi, chúng tôi sẽ thêm phương thức activateUser và cũng thực hiện các thay đổi trong đăng ký người dùng

Ở đây chúng tôi đang ghi đè phương thức 'đăng ký' của RegistersUser trait. Sau khi người dùng được đăng ký, chúng tôi gọi phương thức thông báo và chuyển phiên bản mới của lớp thông báo UserRegisteredSuccessfully sẽ gửi thư thông báo tới từng người dùng kèm theo liên kết để kích hoạt tài khoản

Bây giờ, chúng tôi cần cập nhật các trường có thể điền trong mô hình 'Người dùng' của chúng tôi

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'username', 'password' , 'status', 'activation_code',
];

Ngoài ra, chúng tôi cần cập nhật cài đặt thư của mình, với mục đích thử nghiệm, chúng tôi có thể sử dụng Mailtrap. io. Vì vậy, chúng tôi cần cập nhật các khóa sau trong. tập tin env

Trong hướng dẫn trước, chúng ta đã nói về Database Migration, Config và Todos CRUD với Eloquent Models. Hướng dẫn này là tất cả về Xác thực. Chúng tôi sẽ tạo một Hệ thống xác thực đầy đủ với Xác minh email và Đặt lại mật khẩu

xác thực

Laravel đi kèm với một hệ thống xác thực hoàn chỉnh ngay lập tức, nơi người dùng có thể đăng ký/đăng nhập, đặt lại mật khẩu của họ, v.v. Có một số điều cần xem xét khi triển khai xác thực với laravel. Laravel bao gồm một User model sẽ được sử dụng cho trình điều khiển xác thực mặc định cho người dùng. Chúng tôi đã có tất cả các bộ điều khiển trong ứng dụng/Http/Bộ điều khiển/Auth và laravel cũng bao gồm các di chuyển cho người dùng và bảng password_reset. Để triển khai auth, tất cả những gì chúng ta phải làm là chạy make. lệnh xác thực. Nó sẽ tạo tất cả các chế độ xem trong thư mục tài nguyên/lượt xem và thêm các tuyến trong trang web của chúng tôi. tập tin định tuyến php

php artisan make:auth

Nó sẽ yêu cầu thay thế bố cục hiện tại, chỉ cần nhấn enter và nó sẽ giữ bố cục cũ của chúng tôi. Hãy cập nhật thanh điều hướng của chúng tôi. lưỡi. php để thêm liên kết đăng nhập/đăng ký và đăng xuất

@auth được sử dụng để kiểm tra xem người dùng có được xác thực hay không. Bên trong @auth, chúng tôi có todos và tạo todos cũng như danh sách thả xuống có liên kết bảng điều khiển và liên kết đăng xuất. Liên kết đăng xuất đang gửi một biểu mẫu ẩn vì đăng xuất sử dụng phương thức POST. Bên trong @else, chúng tôi có các liên kết đăng nhập và đăng ký. Laravel cũng có một chỉ thị @guest ngược lại với @auth

Bạn cũng có thể sử dụng nó với chỉ thị @else

Bạn có thể truy cập đối tượng người dùng được xác thực hiện tại bằng Auth. người sử dụng[]

Định tuyến xác thực

Trước tiên chúng ta hãy xem web. php tệp định tuyến, bạn sẽ thấy rằng bây giờ chúng ta có hai dòng mã mới

xác thực. routes[] sẽ đăng ký tất cả các route liên quan đến xác thực như đăng nhập, đăng ký và đặt lại mật khẩu. Tuyến thứ hai là tuyến “nhà” sẽ chuyển hướng người dùng đến trang chủ/trang tổng quan sau khi đăng nhập. Bạn có thể gõ tuyến đường. liệt kê lệnh để xem tất cả các tuyến đường được đăng ký bởi ứng dụng của bạn. Để tiện cho việc học hỏi, mình sẽ đưa tất cả các tuyến đường vào đây để các bạn dễ hiểu hơn

Một lần nữa, bạn không cần phải đặt tất cả các tuyến trong mã của mình [vì chúng tôi không muốn các tuyến trùng lặp]. Nó chỉ để hiển thị cho bạn các tuyến thực tế chịu trách nhiệm xác thực

Bộ điều khiển xác thực

Hãy xem các bộ điều khiển của chúng ta, nằm trong thư mục app/Http/Controllers/Auth. Có tổng cộng 5 bộ điều khiển

  • ForgotPasswordController gửi email đặt lại mật khẩu cho một người dùng được chỉ định
  • LoginController đăng nhập và đăng xuất một người dùng cụ thể
  • RegisterController đăng ký người dùng
  • ResetPasswordController đặt lại mật khẩu của người dùng
  • VerficationController gửi email xác minh cho người dùng và xác minh người dùng

Tất cả các bộ điều khiển này ngoại trừ ForgotPasswordController đều có thuộc tính được bảo vệ $redirectTo được sử dụng để chỉ định url chuyển hướng khi họ đăng nhập hoặc đăng ký. Theo mặc định, chúng có /home route nhưng bạn có thể chỉ định một url khác nếu muốn. Nếu bạn mở LoginController, bạn sẽ không thấy phương thức __contruct[] nào khác và đó là vì tất cả các bộ điều khiển xác thực đều sử dụng Đặc điểm có tất cả chức năng. Những Đặc điểm này có thể được tìm thấy trong thư mục nhà cung cấp/laravel/framework/src/Illuminate/Foundation/Auth và nếu bạn muốn sửa đổi một phương thức nhất định thì hãy ghi đè chúng trong bộ điều khiển. Laravel cũng đi kèm với điều chỉnh đăng nhập và người dùng sẽ không thể đăng nhập cho đến 60 giây nếu 5 lần thử không thành công

Đừng sửa đổi những đặc điểm đó vì chúng chỉ là phần phụ thuộc và sẽ thay đổi khi bạn cài đặt lại chúng

Lượt xem xác thực

Tất cả các chế độ xem xác thực có thể được tìm thấy trong thư mục resource/views/auth. Các chế độ xem này đang sử dụng kiểu dáng bootstrap nhưng bạn có thể thay đổi chúng theo cách bạn muốn. Tất cả những gì chúng tôi đang làm trong các chế độ xem xác thực này là gửi biểu mẫu và chúng tôi đã học nó trong hướng dẫn trước nên tôi sẽ không giải thích chúng ở đây. Vì chúng tôi đã tạo bảng người dùng và password_reset khi chúng tôi tạo bảng todos nên tất cả những gì chúng tôi phải làm là nhấp vào liên kết đăng ký và tạo người dùng mới. Nút đăng ký sẽ tự động đăng nhập chúng tôi và chuyển hướng đến chế độ xem trang chủ

Phần mềm trung gian

Phần mềm trung gian được sử dụng để lọc các yêu cầu http được gửi tới ứng dụng của bạn. Ví dụ: bạn không muốn cho phép khách xem trang chủ [bảng điều khiển] của ứng dụng của mình và điều tương tự cũng xảy ra với người dùng đã xác thực, họ không cần xem chế độ xem đăng nhập và đăng ký. Laravel đã đi kèm với phần mềm trung gian như “auth” sẽ chặn tất cả yêu cầu chưa được xác thực vào ứng dụng của bạn và phần mềm trung gian “khách” sẽ chặn tất cả yêu cầu từ người dùng được xác thực. Bạn cũng có thể tạo phần mềm trung gian của riêng mình mà chúng tôi sẽ không làm trong loạt bài này. Bạn có thể áp dụng phần mềm trung gian trực tiếp trong bộ điều khiển hoặc trong tuyến đường của mình. Để xác định phần mềm trung gian trong bộ điều khiển, bạn có thể sử dụng $this->middleware[] bên trong hàm tạo. Thêm mã bên dưới vào TodosController của bạn

Điều này sẽ chặn quyền truy cập vào tất cả các phương thức từ người dùng chưa được xác thực. Nếu bạn muốn bỏ qua một số phương thức nhất định thì bạn có thể xâu chuỗi phương thức phần mềm trung gian[] với except[], phương thức này nhận một mảng chuỗi [bạn cũng có thể chuyển một mảng chuỗi vào phương thức phần mềm trung gian[] nếu bạn có nhiều hơn một phần mềm trung gian]. Ví dụ: trong LoginController của chúng tôi, chúng tôi có phần mềm trung gian “khách” ngoại trừ phương thức logout[]

Để áp dụng phần mềm trung gian cho tuyến đường, chúng ta có thể sử dụng phương thức phần mềm trung gian []

Xác thực người dùng theo cách thủ công

Có thể có một số trường hợp bạn muốn tự tạo xác thực như xác thực quản trị viên riêng. Laravel cung cấp một số phương thức có thể được sử dụng để xác thực, vì vậy hãy xem xét chúng

Sử dụng phương thức try[] để nhận một mảng email và mật khẩu kết hợp và tham số thứ hai là một boolean để ghi nhớ cookie của tôi sẽ giữ cho người dùng đăng nhập ngay cả sau khi đóng trình duyệt

Sử dụng phiên bản Người dùng hoặc trường Id

Đăng xuất người dùng

ví dụ đăng nhập

Khi bạn đăng ký người dùng, bạn sẽ phải băm mật khẩu trước khi lưu trữ nó vào cơ sở dữ liệu và bạn có thể sử dụng Hash facade

Laravel sử dụng các bộ bảo vệ để xác thực, cung cấp cho bạn khả năng quản lý nhiều xác thực từ nhiều bảng như bảng quản trị viên và bảng người dùng riêng biệt. Chúng tôi sẽ không nói về những người bảo vệ trong bộ truyện này nhưng nếu tò mò thì hãy khám phá auth. tập tin cấu hình php và

Email xác thực

Trước Laravel 5. 7, bạn sẽ phải tự thực hiện xác minh email hoặc sử dụng gói nhưng hiện tại xác minh email được cung cấp bởi chính laravel. Để triển khai xác minh email, mô hình Người dùng của bạn phải triển khai hợp đồng “MustVerifyEmail”. Tất cả những gì bạn phải làm là thêm “Implements MustVerifyEmail” vào phần khai báo lớp

Hãy thiết lập trình điều khiển thư của chúng tôi. Chúng tôi sẽ sử dụng mailtrap hoạt động giống như một hộp cát và thay vì gửi email đến những người dùng được chỉ định, nó sẽ thu thập tất cả các email trong hộp thư đến của mailtrap. Lần đầu tiên đăng ký bằng mailtrap và đăng nhập, sau đó nhấp vào “Hộp thư đến Demo” và bạn sẽ thấy thông tin đăng nhập

Đặt “tên người dùng”, “mật khẩu” của bạn và đặt MAIL_ENCRYPTION thành “tls” và khởi động lại máy chủ nhà phát triển

Điều cuối cùng chúng ta cần làm là thêm phần mềm trung gian xác minh vào các tuyến xác thực

Để bảo vệ các tuyến khỏi người dùng chưa được xác minh, chúng tôi có thể sử dụng phần mềm trung gian “đã được xác minh”. Trong hướng dẫn này, chúng tôi sẽ thêm phần mềm trung gian “đã xác minh” vào tuyến đường “nhà”

Bạn cũng có thể sử dụng nó trong bộ điều khiển của mình

Điều này sẽ chặn quyền truy cập vào người dùng chưa được xác minh và chỉ cho phép người dùng đã xác minh email của họ. Bây giờ khi bạn đăng ký người dùng mới, nó sẽ gửi email xác minh tới người dùng đó [trong hộp thư đến mailtrap của chúng tôi] và chuyển hướng chúng tôi đến chế độ xem xác minh [điều tương tự sẽ xảy ra khi người dùng cũ cố gắng truy cập đường dẫn về nhà]

Chuyển đến hộp thư đến mailtrap của bạn, mở email và nhấp vào nút “Xác minh địa chỉ email”, nó sẽ mở ứng dụng của chúng tôi và bây giờ chúng tôi có thể truy cập vào tuyến đường về nhà

nếu url trong email là localhost thì bạn nên đổi APP_URL thành “http. //127. 0. 0. 1. 8000" và khởi động lại máy chủ

Đặt lại mật khẩu của người dùng

Vì chúng tôi đã thiết lập trình điều khiển thư, bây giờ tất cả những gì chúng tôi phải làm là nhấp vào nút “Quên mật khẩu của bạn” trên biểu mẫu đăng nhập và nó sẽ mở ra chế độ xem email mật khẩu. Nhập email của bạn, nhấp vào nút Liên kết Gửi Đặt lại Mật khẩu và nó sẽ gửi email đặt lại mật khẩu đến hộp thư đến mailtrap của bạn. Bây giờ hãy mở email từ mailtrap và nhấp vào nút “Đặt lại mật khẩu”. Thao tác này sẽ mở biểu mẫu đặt lại mật khẩu nơi bạn có thể đặt lại mật khẩu

Hướng dẫn tiếp theo là hướng dẫn cuối cùng và sẽ là về các mối quan hệ hùng hồn và tải lên hình ảnh. Bạn sẽ học các mối quan hệ Một đến Nhiều và Một đến Nhiều [Nghịch đảo] và một số phương pháp hữu ích cho các mô hình hùng biện. Chúng tôi sẽ tạo một ràng buộc khóa ngoại để người dùng chỉ có thể sửa đổi/tạo các công việc cần làm của riêng mình và sẽ không thể xem các công việc cần làm từ những người dùng khác và cuối cùng chúng tôi sẽ tải lên hình ảnh hồ sơ người dùng

Vui lòng bình luận bên dưới hoặc tạo sự cố trong repo github. Hãy tiếp tục hướng dẫn tiếp theo

Chủ Đề