2015-07-21 318 views
21

如何在验证程序中添加密码验证规则?Laravel密码验证规则

验证规则:

密码包含至少三个以下五类的字符:

  • 英文大写字符(A - Z)
  • 英文小写字符(A - (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)
  • 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

Perfact解决方案。感谢您的大力帮助! –

3

听起来像是不错的工作正则表达式。

Laravel验证规则支持正则表达式。无论4.x和5.x版本支持它:

这可能有助于太:

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

+0

am使用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' 
     ); 

    }