Подтвердить что ты не робот

Правило проверки пароля Laravel

Как добавить правило проверки пароля в валидаторе?

Правило проверки:

Пароль содержит символы, по меньшей мере, из трех следующих пяти категорий:

  • Английские символы верхнего регистра (A - Z)
  • Английские строчные буквы (a - z)
  • База 10 цифр (0 - 9)
  • Не-буквенно-цифровой (например:!, $, # или%)
  • Юникодовые символы

Как добавить правило выше в правиле валидатора?

Мой код здесь

// create the validation rules ------------------------
    $rules = array(
        'name'             => 'required',                        // just a normal required validation
        'email'            => 'required|email|unique:ducks',     // required and must be unique in the ducks table
        'password'         => 'required',
        'password_confirm' => 'required|same:password'           // required and has to match the password field
    );

    // do the validation ----------------------------------
    // validate against the inputs from our form
    $validator = Validator::make(Input::all(), $rules);

    // check if the validator failed -----------------------
    if ($validator->fails()) {

        // get the error messages from the validator
        $messages = $validator->messages();

        // redirect our user back to the form with the errors from the validator
        return Redirect::to('home')
            ->withErrors($validator);

    }
4b9b3361

Ответ 1

У меня был похожий сценарий в Laravel, и я решил его следующим образом.

Пароль содержит символы как минимум из трех следующих пяти категорий:

  • Английские заглавные буквы (A - Z)
  • Английские строчные буквы (a - z)
  • Базовые 10 цифр (0 - 9)
  • Не буквенно-цифровые (например:!, $, # Или%)
  • Юникод символы

Сначала нам нужно создать регулярное выражение и проверить его.

Ваше регулярное выражение будет выглядеть так:

^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[!$#%]).*$

Я проверил и подтвердил его на этом сайте. Тем не менее, действуйте по-своему и корректируйте соответственно. Это только пример регулярных выражений, вы можете манипулировать так, как хотите.

Итак, ваш окончательный код Laravel должен быть таким:

'password' => 'required|
               min:6|
               regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/|
               confirmed',

Обновление Как отмечает @NikK в комментарии, в Laravel 5.6 значение пароля должно быть заключено в квадратные скобки массива, такие как

'password' => ['required', 
               'min:6', 
               'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/', 
               'confirmed']

Я не тестировал его на Laravel 5.6, поэтому я доверяю @NikK, поэтому в настоящее время я перешел на работу с c #/. net и у меня мало времени на Laravel.

Примечание:

  1. Я протестировал и проверил его как на сайте регулярных выражений, так и в тестовой среде Laravel 5, и он работает.
  2. Я использовал min: 6, это необязательно, но всегда полезно иметь политику безопасности, отражающую различные аспекты, одним из которых является минимальная длина пароля.
  3. Я предлагаю вам использовать подтвержденный пароль, чтобы гарантировать, что пользователь вводит правильный пароль.
  4. В пределах 6 символов наше регулярное выражение должно содержать как минимум 3 буквы a-z или A-Z, а также число и специальный символ.
  5. Всегда проверяйте свой код в тестовой среде, прежде чем переходить к производству.
  6. Обновление: То, что я сделал в этом ответе, является просто примером пароля регулярного выражения

Некоторые онлайн-ссылки

Что касается вашего пользовательского сообщения проверки для правила регулярных выражений в Laravel, вот несколько ссылок, на которые можно посмотреть:

Ответ 2

Это не совсем соответствует требованиям ОП, хотя, надеюсь, это поможет. С Laravel вы можете определить свои правила в удобном для обслуживания формате, например так:

    $inputs = [
        'email'    => 'foo',
        'password' => 'bar',
    ];

    $rules = [
        'email'    => 'required|email',
        'password' => [
            'required',
            'string',
            'min:10',             // must be at least 10 characters in length
            'regex:/[a-z]/',      // must contain at least one lowercase letter
            'regex:/[A-Z]/',      // must contain at least one uppercase letter
            'regex:/[0-9]/',      // must contain at least one digit
            'regex:/[@$!%*#?&]/', // must contain a special character
        ],
    ];

    $validation = \Validator::make( $inputs, $rules );

    if ( $validation->fails() ) {
        print_r( $validation->errors()->all() );
    }

Будет вывод:

    [
        'The email must be a valid email address.',
        'The password must be at least 10 characters.',
        'The password format is invalid.',
    ]

(Правила регулярных выражений совместно используют сообщение об ошибке по умолчанию, т.е. четыре ошибочных правила регулярного выражения приводят к одному сообщению об ошибке)

Ответ 4

копия в модели

 public static function Rules($id){
        if($id!=''){
            $id=','.$id;
        }
        return array(
        'name'=>'required|min:2',
        'email'=>'required|email|unique:users,email'.$id,
        'username'=>'required|unique:users,username'.$id,
        'password'=>'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%@]).*$/|confirmed',
        'password_confirmation'=>'required|min:6',
        'mobile_no'=>'min:5',
        'profile_image'=>'mimes:jpg,jpeg,bmp,png|max:10000'
        );

    }