Tuyến đường (đặt lại mật khẩu không được xác định Laravel 8)
Xác minh email và đặt lại mật khẩu là hai tính năng xác thực không thể thiếu của các ứng dụng hiện đại. Trong hầu hết các ứng dụng web, người dùng thường đặt lại mật khẩu bị mất, tuy nhiên, họ cũng phải xác minh địa chỉ email của mình trước khi truy cập ứng dụng web lần đầu tiên Show
Laravel cung cấp các dịch vụ tích hợp, tiện dụng để gửi và xác minh các yêu cầu xác minh email và đặt lại mật khẩu một cách an toàn. Nhưng trong hướng dẫn này, bạn sẽ học cách tạo xác minh email tùy chỉnh và đặt lại mật khẩu trong Laravel điều kiện tiên quyết
Xác minh email và đặt lại mật khẩu trong nháy mắtCần có tùy chọn đặt lại mật khẩu bất cứ khi nào bạn thêm chức năng đăng nhập và đăng ký để xác thực người dùng. Làm như vậy, bất cứ khi nào người dùng quên mật khẩu, họ có phương tiện để đặt lại mật khẩu. Là một phần của quy trình này, thường sẽ có một mã thông báo trong liên kết đặt lại và mã thông báo đó phải được xác thực. Bạn có thể xem một ví dụ đơn giản dưới đây
Laravel cung cấp một số triển khai xác thực khác nhau để tạo chúng, chẳng hạn như UI auth, Breeze Auth và Jetstream, bao gồm chức năng đăng nhập, đăng ký, xác minh email và đặt lại mật khẩu Tuy nhiên, nếu bạn định tạo một ứng dụng không có các gói xác thực này thì bạn phải triển khai chức năng đặt lại mật khẩu và xác minh email theo cách thủ công Lợi ích xác minh email tùy chỉnh và đặt lại mật khẩuCó thể cần tùy chỉnh quy trình đặt lại mật khẩu và xác minh email khi xây dựng API vì đặt lại mật khẩu mặc định và xác minh email từ giàn giáo xác thực mặc định của Laravel chủ yếu nhắm mục tiêu vào các ứng dụng web Trong hướng dẫn này, bạn sẽ học cách làm điều này. Bạn sẽ không gửi mã thông báo được nhúng trong các liên kết, thay vào đó, bạn sẽ gửi các ghim 6 chữ số. Chúng phù hợp cho cả ứng dụng web và API — giả sử bạn đang xây dựng chúng cho các nhà phát triển di động sử dụng Tạo ứng dụng LaravelBạn có thể tạo một ứng dụng Laravel mới thông qua Trình soạn thảo hoặc cài đặt Trình cài đặt Laravel dưới dạng phụ thuộc Trình soạn thảo toàn cầu. Chúng ta sẽ sử dụng Laravel Installer trong hướng dẫn này. Để tạo ứng dụng bằng nó, hãy chạy lệnh sau trong terminal
Điều này sẽ tạo một ứng dụng Laravel trong một thư mục mới có tên custom_authentication. Tiếp theo, thay đổi thư mục ứng dụng mới bằng cách chạy lệnh sau
Bây giờ, khởi động ứng dụng bằng cách chạy lệnh sau
Theo mặc định, dự án được phục vụ trên cổng 8000 trên máy chủ cục bộ, vì vậy bây giờ bạn có thể truy cập ứng dụng bằng cách nhập http. //máy chủ cục bộ. 8000 trong trình duyệt của bạn. Khi thực hiện, bạn sẽ thấy một trang tương tự như hình bên dưới xác nhận rằng dự án của bạn đang chạy Khi ứng dụng đang hoạt động, hãy dừng nó bằng cách nhấn Ctrl + C Thiết lập các biến môi trườngĐể cấu hình cơ sở dữ liệu của ứng dụng, trong. env, hãy cập nhật cài đặt cấu hình cơ sở dữ liệu mà bạn có thể thấy trong ví dụ bên dưới để khớp với chi tiết cho cơ sở dữ liệu của bạn
Vì bạn sẽ sử dụng Máy chủ SMTP của Gmail để gửi mã PIN gồm 6 chữ số cho người dùng qua email, tiếp theo, bạn cần cập nhật các biến môi trường thư để khớp với các giá trị bên dưới. Thay thế hai trình giữ chỗ bằng tên người dùng và mật khẩu Gmail của bạn tương ứng
Cẩn thận không sử dụng dấu ngoặc kép(“,',) hoặc dấu cách. Ngoài ra, bạn có thể cần xóa bộ đệm của Laravel, mặc dù điều đó không bắt buộc. Để làm điều đó, hãy chạy lệnh sau trong terminal
Bạn có thể tìm thêm thông tin về cách gửi thư bằng Gmail SMTP trong bài viết này Để sử dụng GMAIL làm máy chủ SMTP, bạn cần bật Quyền truy cập ứng dụng kém an toàn hơn Thiết lập mô hình và di chuyểnLaravel đi kèm với một tệp Mô hình mặc định có tên là Người dùng. php, nằm trong thư mục app/Models và tệp Di chuyển có tên 2014_10_12_000000_create_users_table. php trong thư mục cơ sở dữ liệu/di chuyển Cập nhật người dùng. php bằng cách sửa đổi mảng 0, cho biết các trường có thể điền, để khớp với ví dụ mã bên dưới________số 8 Sau đó, cập nhật phương thức 1 của tệp di chuyển để khớp với ví dụ bên dưới 0Thiết lập xác thựcBạn sẽ sử dụng Laravel Sanctum trong hướng dẫn này, đây là một hệ thống xác thực hạng nhẹ dành cho SPA (Ứng dụng một trang), ứng dụng di động và API dựa trên mã thông báo, để hạn chế quyền truy cập vào một số tuyến đường Cài đặt nó bằng Trình soạn thảo, bằng cách chạy lệnh bên dưới 1Tiếp theo, sử dụng lệnh 2 Artisan bên dưới, để xuất bản các tệp cấu hình và di chuyển Sanctum mới vào thư mục 3 của ứng dụng của bạn 0Sau đó, trong ứng dụng/Http/Kernel. php, hãy thêm phần mềm trung gian của Sanctum vào nhóm phần mềm trung gian 4 của bạn, bằng cách bỏ ghi chú dòng được đánh dấu trong ví dụ bên dưới 1Chạy di chuyển cơ sở dữ liệuVới những thay đổi đã thực hiện, tiếp theo, hãy chạy lệnh sau để thực hiện di chuyển cơ sở dữ liệu và cung cấp cơ sở dữ liệu 2Thêm hỗ trợ xác minh emailSau khi đăng ký thành công, người dùng được nhắc kiểm tra email của họ (được gửi qua Mailable) để lấy mã PIN gồm 6 chữ số. Nếu mã PIN trùng khớp thì email của họ được xác minh thành công và họ được chuyển hướng đến trang chủ Để tạo theMailable, app/Mail/VerifyEmail. php và mẫu xem tương ứng của nó, tài nguyên/lượt xem/email/xác minh. lưỡi. php, hãy chạy lệnh Artisan sau 3Sau đó, mở ứng dụng/Mail/VerifyEmail. php và cập nhật phương thức 5 để khớp với mã bên dưới 4Sau đó, thêm biến thành viên bên dưới vào đầu lớp 5 6 được đặt làm biến thành viên chung để nó có thể được chuyển từ 7 (sẽ sớm được tạo) sang hàm tạo của 8Tiếp theo, cập nhật hàm 9 của lớp để khớp với mã bên dưới 6Và sau đó, cập nhật mẫu chế độ xem email, tài nguyên/lượt xem/email/xác minh. lưỡi. php, để khớp với mã bên dưới 7Thiết lập bộ điều khiển đăng kýTiếp theo, bạn cần tạo bộ điều khiển để đăng ký người dùng và gửi cho họ email có mã PIN gồm 6 chữ số để họ có thể xác minh địa chỉ email của mình. Để tạo bộ điều khiển, hãy chạy lệnh sau 8Điều này sẽ tạo một tệp mới, RegisterController. php, trong thư mục app\Http\Controllers. Tiếp theo, thêm các câu lệnh 0 sau vào đầu tệp 9Sau đó, xác định phương thức 1 bằng cách thêm mã bên dưới vào lớp 0Mã bắt đầu bằng cách xác thực tất cả các trường đăng ký bắt buộc trước khi đăng ký người dùng. Các quy tắc xác nhận bao gồm
Nếu đăng ký thành công, một email sẽ được gửi với mã PIN gồm 6 chữ số đến địa chỉ email đã đăng ký để xác minh email và mã thông báo sẽ được trả lại trong phản hồi. Mã thông báo này được sử dụng để thực hiện bất kỳ yêu cầu được ủy quyền nào trong tương lai Tiếp theo, xác định phương thức 3 của bộ điều khiển bằng cách dán mã bên dưới vào sau phương thức 4 1Phương pháp này xác minh rằng mã PIN gồm 6 chữ số, được truy xuất từ yêu cầu, được liên kết với yêu cầu đặt lại địa chỉ email cho người dùng hiện tại. Nếu đúng như vậy thì yêu cầu đặt lại mật khẩu sẽ bị xóa và email của người dùng được đánh dấu là đã được xác minh. Sau đó, một phản hồi thành công được trả về Nếu mã thông báo không được cung cấp hoặc mã thông báo không được liên kết với yêu cầu mật khẩu cho người dùng thì người dùng sẽ được chuyển hướng trở lại 7 với thông báo lỗi áp dụngThêm chức năng gửi lại pinNếu mã PIN đặt lại mật khẩu gồm 6 chữ số hết hạn, người dùng có thể muốn yêu cầu mã PIN khác. Để làm điều đó, hãy xác định phương thức 6 bằng cách thêm đoạn mã sau vào 7 sau phương thức 3 2Mã bắt đầu bằng cách kiểm tra xem địa chỉ email đã gửi có hợp lệ không. Nếu có và nó đã được liên kết với yêu cầu đặt lại mật khẩu thì yêu cầu đặt lại mật khẩu phù hợp sẽ bị xóa Sau đó, một mã thông báo mới được tạo và cùng với địa chỉ email, được sử dụng để tạo yêu cầu đặt lại mật khẩu mới. Nếu yêu cầu được tạo thành công, thì mã thông báo sẽ được gửi qua email cho người dùng. Ngoài ra, phản hồi JSON thông báo cho người dùng rằng họ sẽ nhận được email có mã thông báo đặt lại Thiết lập phần mềm trung gianĐiều tiếp theo cần làm là tạo một lớp phần mềm trung gian mới sẽ ngăn người dùng truy cập các tuyến khác cho đến khi địa chỉ email của họ được xác minh. Để tạo nó, hãy chạy lệnh sau 3Lệnh sẽ tạo một tệp mới, VerifyEmail. php, trong ứng dụng/Http/Middleware/. Với tệp đã tạo, hãy thêm các câu lệnh 0 sau vào đầu tệp 4Sau đó, cập nhật phương thức 0 để khớp với đoạn mã sau 5Tiếp theo, bạn cần liên kết nó với phần mềm trung gian định tuyến của ứng dụng, bằng cách thêm dòng được đánh dấu bên dưới vào mảng 1 trong app\Http\Kernel. php 6Thiết lập bộ điều khiển đăng nhậpTiếp theo, bạn cần tạo bộ điều khiển có chức năng đăng nhập và đăng xuất bằng cách chạy lệnh sau 7Thao tác này sẽ tạo một tệp có tên 2 trong thư mục app\Http\Controllers. Sau khi nó được tạo, hãy thêm các câu lệnh 0 sau vào đầu tệp 8Sau đó, định nghĩa các phương thức 4 và 5 bằng cách sao chép đoạn mã sau vào phần thân của lớp 9Phương thức 4 yêu cầu địa chỉ email và mật khẩu. Địa chỉ email phải hợp lệ và được liên kết với mật khẩu trước khi người dùng đăng nhập thành công. Sau khi đăng nhập thành công, một mã thông báo mới được gán cho người dùng để thực hiện các yêu cầu trái phépPhương pháp 5 xóa mã thông báo của người dùng để họ không có quyền truy cập được ủy quyền cho đến khi họ đăng nhập lại để nhận mã thông báo mớiThêm hỗ trợ đặt lại mật khẩuTrước khi cho phép người dùng thay đổi mật khẩu của họ — đặc biệt là khi họ chưa đăng nhập — phải cung cấp một phương tiện để đảm bảo rằng người dùng hợp lệ và sở hữu tài khoản Một cách hay để thực hiện việc này là gửi mã PIN xác nhận đến địa chỉ email đã đăng ký bằng Mailable. Nếu người dùng gửi mã PIN chính xác thì họ được phép đặt lại mật khẩu của mình Tạo một mật khẩu đặt lại MailableTạo theMailable, trong ứng dụng/Mail/ResetPassword. php và mẫu xem tương ứng của nó, trong tài nguyên/lượt xem/email/mật khẩu. lưỡi. php, bằng cách chạy lệnh sau 0Với các tệp đã tạo, hãy mở ứng dụng/Mail/ResetPassword. php và cập nhật phương thức 5 như sau 4Sau đó, xác định biến thành viên lớp 6 ở đầu lớp 5Tiếp theo, cập nhật phương thức `build()` như sau 3Sau đó, cập nhật mẫu chế độ xem email trong tài nguyên/lượt xem/email/mật khẩu. lưỡi. php như sau 4Thiết lập bộ điều khiển quên mật khẩuTiếp theo, bạn cần tạo bộ điều khiển để giúp người dùng đặt lại mật khẩu của họ, gửi email cho họ mã PIN đặt lại mật khẩu. Để làm như vậy, hãy chạy lệnh sau 5Nó sẽ tạo một tệp mới có tên là ForgotPasswordController. php trong thư mục app\Http\Controllers. Khi nó được tạo, hãy thêm các câu lệnh 0 cần thiết vào đầu tệp 6Tiếp theo, xác định phương thức 01, bằng cách dán mã bên dưới vào lớp 7Phương thức 01 xác thực địa chỉ email được gửi trong yêu cầu và kiểm tra xem địa chỉ đó có được liên kết với người dùng hiện tại hay không và liệu địa chỉ đó có được liên kết với yêu cầu đặt lại mật khẩu không. Nếu đúng như vậy, thì yêu cầu đặt lại mật khẩu hiện tại sẽ được thay thế bằng một yêu cầu khác. Sau đó, nó kết thúc bằng cách gửi email đặt lại mật khẩu cho người dùng, email này có chứa mã pin đặt lại mật khẩuTiếp theo, thêm phương thức 03, bên dưới, sau phương thức 04 8Phương pháp này yêu cầu địa chỉ email của người dùng và mã PIN gồm 6 chữ số được gửi cho họ, sau khi người dùng yêu cầu đặt lại mật khẩu của họ. Nếu mã pin chưa hết hạn và được liên kết với yêu cầu đặt lại mật khẩu bằng địa chỉ email của người dùng, thì người dùng được phép đặt lại mật khẩu của họ. Nếu không, một thông báo lỗi áp dụng được trả lại Thiết lập bộ điều khiển đặt lại mật khẩuTiếp theo, bạn cần tạo bộ điều khiển để đặt lại mật khẩu của người dùng. Để tạo bộ điều khiển, hãy chạy lệnh sau 9Nó sẽ tạo một tệp mới có tên ResetPasswordController. php trong thư mục app\Http\Controllers. Khi nó được tạo, hãy thêm các câu lệnh 0 sau vào đầu tệp 8Sau đó, triển khai phương thức 06 cho phép người dùng đặt lại mật khẩu của họ bằng cách thêm mã bên dưới vào phần thân của lớp 1Thiết lập các tuyến đường cần thiếtCác route của Laravel được lưu trữ trong routes/web. php cho các ứng dụng web và trong các tuyến đường/api. php cho API. Đối với hướng dẫn này, bạn sẽ lưu trữ chúng trong routes/api. php Lộ trình đăng xuất sẽ được bảo vệ bằng phần mềm trung gian 07 và 08, bởi vì chỉ những người dùng đã đăng nhập mới có thể đăng xuất và chỉ những người dùng đã xác minh mới có quyền truy cập vào các điểm cuối khác. Tuyến email xác minh sẽ được bảo vệ bằng phần mềm trung gian 07. Các tuyến khác không cần xác thực hoặc xác thực người dùng, vì vậy không cần được bảo vệ bởi bất kỳ phần mềm trung gian nàoĐể thực hiện việc này, hãy thêm định nghĩa tuyến đường bên dưới vào cuối routes/api. php 2Các tuyến đường 10 và 11 đã được bảo vệ bằng bộ bảo vệ xác thực tôn nghiêm, 12. Điều này đảm bảo rằng chỉ những người dùng được xác thực mới có thể truy cập chúngKiểm tra ứng dụngVới API được tạo, đã đến lúc kiểm tra và xác nhận rằng API đang hoạt động bình thường. Có nhiều cách khác nhau để làm như vậy, chẳng hạn như sử dụng Postman hoặc cURL, nhưng chúng tôi sẽ sử dụng Postman Tuy nhiên, trước khi chúng tôi có thể làm điều đó, hãy khởi động ứng dụng bằng cách chạy lệnh bên dưới
Kiểm tra chức năng đăng kýĐiều đầu tiên cần làm là kiểm tra chức năng đăng ký và đăng nhập. Để làm điều đó, hãy tạo một yêu cầu POST mới trong Postman bằng URL 13. Sau đó, trong tab Nội dung
Với yêu cầu đã được định cấu hình, hãy gửi yêu cầu đó bằng cách nhấp vào Gửi. Bạn sẽ thấy một phản hồi JSON tương tự như phản hồi bên dưới trong nội dung phản hồi trong Postman Kiểm tra chức năng verify emailĐể làm được điều này, bạn cần ba điều
Tạo một yêu cầu POST mới trong Postman bằng URL 19Sau đó, trong tab Nội dung
Sau đó, trong tab Ủy quyền (có tên là Auth trong các phiên bản Postman mới hơn)
Sau đó, gửi yêu cầu bằng cách nhấp vào Gửi. Nếu thành công, bạn sẽ thấy nội dung phản hồi tương tự như ví dụ bên dưới 4Kiểm tra chức năng đăng nhậpTiếp theo, hãy thử đăng nhập. Để làm điều đó, hãy tạo một yêu cầu POST mới trong Postman bằng URL 03. Sau đó, trong tab Nội dung
5Sau đó, gửi yêu cầu bằng cách nhấp vào Gửi. Nếu thành công, bạn sẽ thấy nội dung phản hồi tương tự như trong ảnh chụp màn hình bên dưới Kiểm tra chức năng đăng xuấtĐể thực hiện việc này, hãy tạo một yêu cầu POST mới trong Postman, sử dụng URL 04Sau đó, trong tab Ủy quyền
Sau đó, gửi yêu cầu bằng cách nhấp vào Gửi. Nếu thành công, bạn sẽ thấy nội dung phản hồi tương tự như ví dụ bên dưới 6Kiểm tra chức năng đặt lại mật khẩuChuyển sang phần kiểm tra đặt lại mật khẩu, trước tiên bạn cần yêu cầu mã PIN gồm 6 chữ số, sau đó bạn có thể đặt lại mật khẩu. Trường bắt buộc duy nhất là 14Để thực hiện việc này, hãy tạo một yêu cầu POST mới trong Postman, sử dụng URL 07. Sau đó, trong tab Nội dung
Sau đó, gửi yêu cầu bằng cách nhấp vào Gửi. Nếu thành công, bạn sẽ thấy nội dung phản hồi tương tự như ví dụ bên dưới 7Tiếp theo, gửi mã PIN bạn đã được gửi qua email để xác minh. Để thực hiện việc này, hãy tạo một yêu cầu POST mới trong Postman, sử dụng URL 09. Sau đó, trong tab Nội dung
Sau đó, gửi yêu cầu bằng cách nhấp vào Gửi. Nếu thành công, bạn sẽ thấy nội dung phản hồi tương tự như ví dụ bên dưới 8Vì mã PIN đã được xác minh, giờ đây bạn có thể đặt lại mật khẩu của mình. Để thực hiện việc này, hãy tạo một yêu cầu POST mới trong Postman, sử dụng URL 07. Sau đó, trong tab Nội dung
Sau đó, gửi yêu cầu bằng cách nhấp vào Gửi. Nếu thành công, bạn sẽ thấy nội dung phản hồi tương tự như ví dụ bên dưới 9Phần kết luậnTrong hướng dẫn này, bạn đã học cách tạo chức năng Quên mật khẩu và Xác minh email tùy chỉnh trong Laravel. Kiểm tra tài liệu chính thức để biết thêm về xác minh email mặc định của Laravel và đặt lại mật khẩu. Mã cho dự án này là mã nguồn mở và có sẵn trên GitHub Funke là một người yêu thích công nghệ, quan tâm sâu sắc đến việc xây dựng và thúc đẩy các cộng đồng công nghệ bền vững, đặc biệt là thanh thiếu niên và thanh niên. Cô ấy là một nhà phát triển phụ trợ, người đam mê phát triển cộng đồng và đã xuất bản các bài viết trên nhiều blog bao gồm cả blog cá nhân của cô ấy Khi cô ấy không viết mã hoặc tạo nội dung kỹ thuật, cô ấy đang phục vụ nhân loại cho cộng đồng địa phương của mình để giải quyết các vấn đề xã hội. Bạn có thể liên hệ với cô ấy trên Twitter và Github Làm cách nào để đặt lại mật khẩu trong Laravel 8?Đặt lại mật khẩu . Tuyến đường. get('/reset-password/{token}', function ($token) { xem lại ('auth. đặt lại mật khẩu', ['token' => $token]); })-> phần mềm trung gian('khách')->tên('mật khẩu. cài lại'); Làm cách nào để đặt lại mật khẩu quản trị viên trong laravel?Cathy trò chuyện . Đặt trình điều khiển thư là "nhật ký" (. tập tin env) bấm vào quên mật khẩu lấy liên kết đặt lại mật khẩu (nội dung thư) trong laravel. đăng nhập dán nó vào trình duyệt và đặt lại mật khẩu Mẫu email đặt lại mật khẩu laravel ở đâu?Tạo mật khẩu đặt lại Có thể gửi thư
. php và mẫu chế độ xem tương ứng của nó, trong tài nguyên/lượt xem/email/mật khẩu .
Làm cách nào để tùy chỉnh email đặt lại mật khẩu trong laravel?Email đặt lại mật khẩu tùy chỉnh trong Laravel . Đặt lại mật khẩu. toMailUsing(function ($notifiable, $token) { $url = tuyến đường ('mật khẩu. đặt lại',$token). '? . $notifiable->getEmailForPasswordReset(); trở lại (MailMessage()) mới ->subject('Đặt lại mật khẩu') -> xem('email. đặt lại', thu gọn ('url')); |