2015-07-21 4 views
21

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

Validation:

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

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

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

Мой код Здесь

// 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); 

    } 
+0

Невозможно представить любой символ в виде символа * unicode *? –

ответ

61

У меня есть имел аналогичный сценарий в Laravel и решал его следующим образом.

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

  • Заглавные буквы английского алфавита (A - Z)
  • строчные буквы английского алфавита (A - Z)
  • Base 10 цифр (! 0 - 9)
  • не алфавитно-цифровой (например, $, #, или%)
  • Unicode символы

Во-первых, нам нужно создать регулярное выражение и проверить его.

Ваше регулярное выражение будет выглядеть следующим образом:

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

я испытана и утверждена его на this сайте. Тем не менее, выполните свои собственные по-своему и соответствующим образом настройте.

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

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

Примечание:

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

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

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

+1

В вашем регулярном выражении используйте \ x вместо \ X, так как \ X не имеет специального значения. – Mazzy

+1

Решение для перфакта. спасибо за большую помощь !!! –

3

Похоже, хорошая работа для регулярных выражений.

Правила проверки достоверности Laravel поддерживают регулярные выражения. Оба 4.x и 5.x версии поддерживают его:

Это тоже может помочь:

http://www.regular-expressions.info/unicode.html

+0

am using laravel 5.0 – Bharanikumar

+0

http://laravel.com/docs/5.0/validation#rule-regex –

+0

есть ли способ показать сообщение как «сила пароля неверна» для этой ошибки проверки? – Bharanikumar

-6

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

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' 
     ); 

    } 
Смежные вопросы