Php Laravel 4.2验证规则-当前密码必须与DB值匹配

Php Laravel 4.2验证规则-当前密码必须与DB值匹配,php,validation,laravel-4,bcrypt,Php,Validation,Laravel 4,Bcrypt,在密码重置表单上,用户提供当前密码、密码和密码确认。是否有办法在验证规则中指定当前\u密码(其哈希值)必须与数据库值匹配 目前我有: $rules = array( 'current_password' => 'required', 'password' => 'required|confirmed|min:22' ); 多谢各位 更新 多亏了@ChrisForrence和@Ben,我想出了以下非常有效的方法!非常感谢。希望这能帮助其他人: Val

在密码重置表单上,用户提供
当前密码
密码
密码确认
。是否有办法在验证规则中指定
当前\u密码(其哈希值)必须与数据库值匹配

目前我有:

$rules = array(
    'current_password' => 'required',
    'password'         => 'required|confirmed|min:22'
); 
多谢各位

更新

多亏了@ChrisForrence和@Ben,我想出了以下非常有效的方法!非常感谢。希望这能帮助其他人:

Validator::extend('hashmatch', function($attribute, $value, $parameters)
{
    return Hash::check($value, Auth::user()->$parameters[0]);
});
$messages = array(
    'hashmatch' => 'Your current password must match your account password.'
);
$rules = array(
    'current_password' => 'required|hashmatch:password',
    'password'         => 'required|confirmed|min:4|different:current_password'
);

$validation = Validator::make( Input::all(), $rules, $messages );

你不能,
bcrypt
hash是唯一的(它们有自己的随机salt),所以即使你知道用户的纯文本密码,你也不能进行hash-to-hash比较


您可以通过在控制器上执行
hash::check('plain text password','bcrypt hash')
来检查明文密码与
bcrypt
散列。

这可能会有帮助:很好!让我试一试,我们就在那里试一试。谢谢,谢谢。我希望
check
的返回值是布尔值——这应该会有很大帮助@user3558931是的,它是布尔值。在模型中可以这样做吗?