简体   繁体   中英

comparing confirmation password against a hashed password | Laravel 4

I am trying to get the confirmation password to work against the password field in my form. I went through the Validator methods and they all seem to work perfectly. However, when trying to confirm the password I get an error message everytime that they must match..scratching my head I can only determine it's because they are being hashed before going through validation. I am not sure how to get past this as they need to be hash before being entered into the database. Any ideas?

getSignUp Controller

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

If anymore code is needed let me know. I just simply have the withErrors going to the blade template for the signup page

Don't pass the hashed password to the validator. Hash it before you save it:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM