我正在尝试获取确认密码以对照表单中的密码字段。我经历了Validator方法,它们似乎都很完美。但是,在尝试确认密码时,我每次都会收到一条错误消息,他们必须匹配。抓住我的脑袋,我只能确定它,因为它们在进行验证之前正在进行哈希处理。我不确定如何通过这个,因为他们需要在输入数据库之前进行哈希。有什么想法吗?
getSignUp控制器
public function getSignUp() {
$userdata = array(
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password')),
'confirm_password' => Hash::make(Input::get('confirm_password')),
'user_zip_code' => Input::get('user_zip_code')
);
$rules = array(
'email' => 'required|email|unique:users,email',
'password' => 'required|min:5',
'confirm_password' => 'required|same:password',
'user_zip_code' => 'required'
);
$validation = Validator::make($userdata, $rules);
if($validation->fails()){
return Redirect::to('signup')->withErrors($validation)->withInput();
}
$user = new User($userdata);
$user->save();
return Redirect::to('login');
}
如果需要更多代码,请告诉我。我只是将withErrors转到注册页面的刀片模板
答案 0 :(得分:3)
不要将散列密码传递给验证器。在保存之前将其哈希:
public function getSignUp() {
$userdata = array(
'email' => Input::get('email'),
'password' => Input::get('password'),
'confirm_password' => Input::get('confirm_password'),
'user_zip_code' => Input::get('user_zip_code')
);
$rules = ...
$validation = Validator::make($userdata, $rules);
if($validation->fails()){
return Redirect::to('signup')->withErrors($validation)->withInput();
}
$userdata['password'] = Hash::make($userdata['password']);
$user = new User($userdata);
$user->save();
return Redirect::to('login');
}