Laravel 8 中的密码验证规则对象
发布时间:作者: Paul Redmond
得益于 Nuno Maduro 的努力,Laravel v8.39 中现在包含了一个新的密码规则对象。Password 对象提供了一个流畅的 API,用于常见的密码要求以及泄露的密码
来自 @laravelphp:密码规则对象。🔒
— Nuno Maduro (@enunomaduro) 2021 年 4 月 23 日
此规则对象允许轻松自定义密码复杂性要求。您还可以使用 `uncompromised()` 方法确保密码未在数据泄露中被泄露。🔥
🔗 https://t.co/eedKLQuZwp. pic.twitter.com/OBEyliQ7gw
最初在 Laravel 5.5 中发布,自定义验证规则对象 提供了一种流畅的替代字符串规则的方法。在最简单的形式中,Password
规则对象替换了基于字符串的验证规则
<?php // String-based$request->validate([ 'password' => 'required|string|confirmed|min:8',]); // Using the Password rule object$request->validate([ 'password' => ['required', 'confirmed', Password::min(8)],]);
除了用流畅的密码规则对象替换字符串规则之外,自定义密码规则对象还包含用于确保密码强度的内置方法
<?php $request->validate([ 'password' => [ 'required', 'confirmed', Password::min(8) ->mixedCase() ->letters() ->numbers() ->symbols() ->uncompromised(), ],]);
不要为诸如要求大小写混合、字母、符号等典型场景编写自定义正则表达式逻辑。最棒的是 `uncompromised()` 方法,它会将密码与验证 API 进行比较,以查看密码是否出现在数据泄露中。该版本将附带一个 NotPwnedVerifier 实现,它使用 Have I Been Pwned API。
除了这个优秀的新的自定义验证对象之外,Pull Request #36960 包含了一些使用 Laravel 测试 API 调用和验证的良好示例。