ấ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ựcLaravel đ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ựcTrướ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ựcHã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
Lượt xem xác thựcĐừ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
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 gianPhầ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ôngCó 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
Email xác thựcLaravel 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à
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à
Đặt lại mật khẩu của người dùngnế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ủ
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