2015-07-21 19 views
21

Jak dodać regułę sprawdzania poprawności hasła w walidatorze? ZasadaReguła sprawdzania poprawności hasła Laravel

Walidacja:

hasło zawiera znaki z co najmniej trzech z pięciu następujących kategoriach:

  • znaków English wielkimi (A - Z)
  • angielskie małe litery (A - z)
  • Podstawowa cyfra 10 cyfr (0 - 9)
  • Niealfanumeryczna (na przykład:!, $, # lub%)
  • znaków Unicode

Jak dodać powyższe reguły w regule walidatora?

Mój kod tutaj

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

Czy nie można przedstawić każdego znaku jako znaku * Unicode *? –

Odpowiedz

61

mam miał podobny scenariusz w Laravel i rozwiązał go w następujący sposób.

hasło zawiera znaki z co najmniej trzech z pięciu następujących kategoriach:

  • znaków English wielkie (A - Z)
  • angielskie małe litery (A - Z)
  • bazowe 10 cyfr (! 0 - 9)
  • dla alfanumerycznych (na przykład, $, #, lub%)
  • znaków Unicode

Najpierw musimy utworzyć wyrażenie regularne i zatwierdzić je.

Wyrażenie regularne będzie wyglądać następująco:

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

mam przetestowane i zatwierdzone go na this miejscu. Jednak wykonuj własne na swój własny sposób i odpowiednio dostosuj.

Więc twój ostateczny kod laravel powinno być tak:

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

Uwaga:

  1. mam przetestowane i zatwierdzone go zarówno na zwykłej stronie ekspresji oraz test laravel 5 środowisko i to działa.
  2. Użyłem min: 6, jest to opcjonalne, ale zawsze dobrze jest mieć politykę bezpieczeństwa, która odzwierciedla różne aspekty, z których jedną jest minimalna długość hasła.
  3. Proponuję użyć hasła potwierdzonego, aby upewnić się, że użytkownik wpisał poprawne hasło.
  4. W ciągu 6 znaków nasze wyrażenie powinno zawierać co najmniej 3 litery a-Z lub A-Z oraz cyfrę i znak specjalny.
  5. Zawsze testuj swój kod w środowisku testowym przed przejściem do produkcji.

Niektóre odnośniki forum

chodzi niestandardowego wiadomości walidacji reguły regex w laravel, oto kilka linków, aby spojrzeć na:

+1

W swoim wyraże, użyj \ x zamiast \ X, ponieważ \ X nie ma specjalnego znaczenia. – Mazzy

+1

Rozwiązanie perfumeryjne. dzięki za wspaniałą pomoc !!! –

3

Brzmi jak dobra praca dla wyrażeń regularnych.

Reguły walidacji Laravel obsługują wyrażenia regularne. Obie wersje 4.x oraz 5.x wspierają go:

To może pomóc też:

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

+0

Używam programu laravel 5.0 – Bharanikumar

+0

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

+0

Czy jest jakiś sposób wyświetlenia komunikatu "Moc hasła jest nieprawidłowa" dla tego błędu sprawdzania poprawności? – Bharanikumar

-6

kopia w modelu

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

    } 
Powiązane problemy