Php 如何使用Laravel 5.1验证密码
我想验证密码,使其符合以下要求:Php 如何使用Laravel 5.1验证密码,php,laravel,laravel-5.1,laravel-validation,Php,Laravel,Laravel 5.1,Laravel Validation,我想验证密码,使其符合以下要求: 长度至少为8个字符 至少包含1个大写字母 包含至少1个小写字母 至少包含1个特殊字符 匹配确认字段 目前我有: $validator = \Validator::make($request, [ 'password' => 'min:8|confirmed' ],[ 'password.confirmed' => 'Both `password` and `password_confirmation` are required',
- 长度至少为8个字符
- 至少包含1个大写字母
- 包含至少1个小写字母
- 至少包含1个特殊字符
- 匹配确认字段
$validator = \Validator::make($request, [
'password' => 'min:8|confirmed'
],[
'password.confirmed' => 'Both `password` and `password_confirmation` are required',
'password.min' => 'The password must contain at least 8 characters'
]);
这将照顾到最小长度和确认,但我可以找到一个很好的方法做其他检查。任何帮助都将不胜感激。我认为您可以使用正则表达式来完成以下操作: 您可以这样使用:
['password' => ['regex:^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=!?]).*$']]
希望它在某些方面有所帮助 试试这个,它是有效的:)
这是你独立提出的需求清单,还是强加给你的?大多数情况下,这些做法会降低安全性,因为人们很难记住与通常密码不同的密码,所以会出现在纸条之类的东西上。创建一个回调函数。并根据需要添加身份验证。在验证密码的函数中,只需返回
TRUE
或FALSE
,然后检查密码验证中的响应。这不包括数字,也不允许单个消息说明密码未通过验证的原因。但它确实提供了一些选择,因此如果其他人无法想出如何做到这一点,允许按照规则定制消息,我将接受你的回答。正如我对jorge所说的,我希望能够将这些要求分离出来,以便我能够返回专门的消息
$rules = array(
'username' => 'required',
'email' => 'required | between:5,100 | email ',
'password' => 'required | confirmed |regex:/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()+]+.*)[0-9a-zA-Z\w!@#$%^&*()+]{8,}$/'
);
$input = Input::all();
$validation = Validator::make($input, $rules);
if ($validation->fails()){
//if validation fails redirect with inputs
return redirect()->route('/')->withInput()
->withErrors($validation);
}