【问题标题】:How to validate passwords with Laravel 5.1如何使用 Laravel 5.1 验证密码
【发布时间】:2015-10-08 19:44:30
【问题描述】:

我想验证密码,使其符合以下条件:

  • 至少有 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'
]);

这将处理最小长度和确认,但我可以找到进行其他检查的好方法。任何帮助将不胜感激。

【问题讨论】:

  • 这是您独立提出的要求列表,还是强加给您的?大多数情况下,这些做法会降低安全性,因为人们很难记住与通常密码不同的密码,因此会出现在纸质笔记等上。
  • another solution 创建回调函数。并添加您想要的身份验证。在验证密码时的功能中,只需返回 TRUEFALSE 然后检查密码验证中的响应。

标签: php laravel laravel-5.1 laravel-validation


【解决方案1】:

我认为您可以使用正则表达式来解决问题: http://laravel.com/docs/5.1/validation#rule-regex

你可以这样使用:

['password' => ['regex:^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=!?]).*$']]

希望它在某种程度上有所帮助!

【讨论】:

  • 这不考虑数字,也不允许个别消息说明密码未通过验证的原因。但它确实提供了选项,所以如果其他人无法想出如何做到这一点,允许根据规则自定义消息,我会接受你的答案。
【解决方案2】:

试试这个吧:)

   $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);
    }

【讨论】:

  • 正如我对豪尔赫说的,我希望能够分离出需求,以便回馈专门的信息
猜你喜欢
  • 2015-11-30
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 2018-08-15
  • 2016-03-24
  • 2018-06-30
  • 2014-12-23
相关资源
最近更新 更多