innovareti / password-policy
此包的最新版本(v1.4.4)没有提供许可信息。
一个库,用于直观创建密码策略并验证主题是否符合这些策略。
v1.4.4
2022-12-02 18:20 UTC
Requires
- php: >=5.5
README
要安装,首先运行以下命令
composer require innovareti/password-policy
步骤 2
在项目内部,在文件 config/app.php 中,将以下提供者在提供者数组中添加
'providers' => [ /* * Laravel Framework Service Providers... */ PasswordPolicy\Providers\Laravel\PasswordPolicyServiceProvider::class, ...
然后运行以下命令
php artisan passwordpolicy:install
此命令将在项目中创建密码策略表并强制更改具有密码 "password" 的用户的密码,首先将密码更改为随机密码并向用户发送重置密码的电子邮件。
步骤 3
接下来,在文件 app/Providers/AppServiceProvider.php 中,在 boot 函数内添加以下代码
use PasswordPolicy; use App\Models\User; use PasswordPolicy\Observers\UserObserver; use PasswordPolicy\PolicyBuilder; public function boot() { PasswordPolicy::define('default', function (PolicyBuilder $builder) { $builder->defaultRules(); }); User::observe(UserObserver::class); }
步骤 4
现在要使用包中现有的密码验证,请前往所需的请求类(例如:UserRequest)并添加密码规则 "password" 到密码规则中
public function rules() { $rules = []; $rules = [ 'name' => 'required', 'email' => 'required|email|unique:users,email,' . request()->id, 'cpf' => 'required|unique:users,cpf,' . request()->id, 'password' => 'password' <-- ]; return $rules; }
此外,在 Request 的 messages 函数中,您可以添加包的自动返回消息
use PasswordPolicy\Policy; public function messages() { return [ 'required' => ':attribute é obrigatório', 'unique' => ':attribute informado já está sendo utilizado', 'email' => 'O e-mail deve ser válido', 'password' => Policy::validationMessage() //<-- ]; }
如果用户输入错误密码,此消息将返回包中定义的规则。
步骤 5
在使用用户每 x 天强制更改密码的功能时,需要在项目的登录处添加以下代码
use PasswordPolicy\Policy; /** * Method to authenticate User */ public function auth(AuthRequest $request) { ... if(Policy::isPasswordExpired($user->id)) return response()->json('Sua senha expirou! Um e-mail foi enviado no endereço '. $request->only(['email'])['email']. ' para redefinição da senha.', 401); ...
并在 .ENV 中添加以下变量
PASSWORD_POLICY_ACTIVE=true PASSWORD_POLICY_DAYS=90
PASSWORD_POLICY_ACTIVE 变量设置为 "true" 将会强制用户每 x 天更改密码。这些天由 PASSWORD_POLICY_DAYS 变量定义。
注意事项
1 - 如果上述变量不在 .ENV 中,则包将使用默认的 90 天,并且不会激活强制密码更改。
2 - "IsPasswordExpired" 函数将检查根据提供的用户 ID,该用户的密码是否已过期。它将分析用户上次更新密码的日期。此日期包含在安装命令创建的表中(user_password_policies)并通过包中的 Observer(UserObserver)更新。