2015-07-21 14 views
21

Come aggiungere la regola di convalida della password nel validatore? regolaRegola di convalida della password di Laravel

convalida:

La password contiene caratteri appartenenti ad almeno tre delle seguenti cinque categorie:

  • caratteri inglese maiuscoli (A - Z)
  • caratteri minuscoli dell'alfabeto inglese (a - z)
  • Base 10 cifre (0 - 9)
  • Non alfanumerico (ad esempio:!, $, # o%)
  • caratteri Unicode

Come aggiungere sopra regola nella regola di convalida?

My Code Qui

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

Non è possibile rappresentare ogni carattere come * carattere unicode *? –

risposta

61

ho ha avuto uno scenario simile a Laravel e l'ha risolto nel modo seguente.

La password contiene caratteri appartenenti ad almeno tre delle seguenti cinque categorie:

  • caratteri inglese maiuscoli (A - Z)
  • caratteri minuscoli dell'alfabeto inglese (A - Z)
  • Base 10 cifre (! 0 - 9)
  • non alfanumerici (ad esempio, $, #, o%)
  • caratteri Unicode

Per prima cosa, dobbiamo creare un'espressione regolare e convalidarla.

tua espressione regolare sarebbe simile a questa:

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

ho testato e convalidato su this sito. Eppure, esegui il tuo a modo tuo e aggiustalo di conseguenza.

Così il vostro codice di laravel finale dovrebbe essere simile a questo:

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

Nota:

  1. Ho testato e convalidato sia sul sito espressione regolare e un test laravel 5 ambiente e funziona.
  2. Ho usato min: 6, questo è facoltativo ma è sempre una buona pratica avere una politica di sicurezza che rifletta aspetti diversi, uno dei quali è la lunghezza minima della password.
  3. Ti suggerisco di utilizzare la password confermata per garantire che l'utente digiti la password corretta.
  4. All'interno dei 6 caratteri la nostra espressione regolare deve contenere almeno 3 di a-z o A-Z e numero e carattere speciale.
  5. Verificare sempre il codice in un ambiente di prova prima di passare alla produzione.

Alcuni riferimenti online

quanto riguarda il tuo messaggio di convalida personalizzato per la regola regex in laravel, qui ci sono alcuni link per guardare:

+1

Nella tua espressione regolare, usa un \ x invece di \ X poiché \ X non ha significato speciale – Mazzy

+1

Soluzione Perfact. grazie per l'aiuto fantastico !!! –

3

Suona come un buon lavoro per le espressioni regolari.

Le regole di convalida di Laravel supportano le espressioni regolari. Entrambe le versioni 4.xe 5.x stanno sostenendo che:

Questo potrebbe aiutare anche:

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

+0

am usando laravel 5.0 – Bharanikumar

+0

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

+0

c'è un modo per mostrare il messaggio come "la forza della password è sbagliata" per questo errore di validazione? – Bharanikumar

-6

copia nel modello

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

    } 
Problemi correlati