Validating Passwords
Để kiểm tra độ phức tạp của mật khẩu mà người dùng nhập vào bạn có thể sử dụng Password Rule đã tích hợp sẵn từ Laravel 8:
use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rules\Password; $validator = Validator::make($request->all(), [ 'password' => ['required', 'confirmed', Password::min(8)], ]);
Password Rule cho phép dễ dàng thêm các yêu cầu về độ phức tạp của mật khẩu, như yêu cầu mật khẩu có ít nhất một chữ cái, số, ký hiệu hoặc phải có chữ viết hoa lẫn viết thường:
// Require at least 8 characters... Password::min(8) // Require at least one letter... Password::min(8)->letters() // Require at least one uppercase and one lowercase letter... Password::min(8)->mixedCase() // Require at least one number... Password::min(8)->numbers() // Require at least one symbol... Password::min(8)->symbols()
Ngoài ra, có thể kiểm tra mật khẩu có bị tiết lộ trong vụ các vụ rò rỉ dữ liệu mật khẩu được công khai hay không? Đương nhiên có sẽ không được sử dụng 😀 Bằng uncompromised
:
Password::min(8)->uncompromised()
Password Rule sử dụng k-Anonymous để xác định xem mật khẩu có bị rò rỉ hay không thông qua hasibeenpwned.com, để không ảnh hưởng đến quyền riêng tư hoặc bảo mật của người dùng.
Mặc định, nếu mật khẩu xuất hiện ít nhất một lần trong một lần rò rỉ dữ liệu, mật khẩu đó sẽ bị coi là bị xâm phạm. Bạn có thể tùy chỉnh ngưỡng này bằng cách truyền tham số vào uncompromised
:
// Ensure the password appears less than 3 times in the same data leak... Password::min(8)->uncompromised(3);
Tất nhiên có thể validate nhiều thứ cùng lúc 😀
Password::min(8) ->letters() ->mixedCase() ->numbers() ->symbols() ->uncompromised()
Cấu hình mặc định
Có thể thông qua ServiceProvider
để cấu hình mặc định cho mật khẩu bằng Password :: defaults
use Illuminate\Validation\Rules\Password; /** * Bootstrap any application services. * * @return void */ public function boot() { Password::defaults(function () { $rule = Password::min(8); return $this->app->isProduction() ? $rule->mixedCase()->uncompromised() : $rule; }); }
Cách sử dụng
'password' => ['required', Password::defaults()],
Bài viết rất hữu ích luônnnn
minh bi loi no khong nhan validate