直到JS重定向,Laravel ajax身份验证工作


Laravel ajax auth check working until JS redirect

我正在尝试将我们旧的身份验证形式转换为Laravel的Auth。我正在用ajax调用验证用户,并检查他们的密码是否需要重置。

我验证旧的方式,使用Laravel的Auth::login()手动登录用户。ajax调用成功后,我将重定向到重置密码路由的url。

现在,当我到达reset pass路由时,我检查用户是否经过身份验证。当我检查重置密码功能时,用户不再经过身份验证。Laravel路由过滤也返回相同的结果。

任何建议都是赞赏的,谢谢!

Javascript:

function login(){
    $form = $('#login-form')
    $.ajax({
        url: "/laravel/public/index.php/login",
        type: 'POST',
        data: $form.serialize(),
        success: function(data){
            if(data.action == 'reset')
                window.location = '/laravel/public/index.php/reset';
        },
        error: function(){
        }
    });
}

登录功能- Laravel

    $login = Input::get('login');
    $pass = Input::get('password');
    $user = User::where('login', $login)
        ->select('password_reset', 'crypted_password', 'salt', 'password', 'id')
        ->first();
    // check for reset old password
    if($user->password_reset == 1 && Hash::needsRehash($user->password)){
        $reset = LoginController::oldValidation($pass, $user->salt, $user->crypted_password);
        if($reset == 1){
            Auth::login($user);
            error_log('Login Auth:' . Auth::check()); // will return true
            return array('action'=>'reset');
        }
    }

Reset function - Laravel

public static function reset(){
    error_log('Check: ' . Auth::check()); // this is now false
}

尝试使用正确的方式返回响应,否则用户被授权的会话值将无法正确设置。

你应该这样返回你的JSON值:

return Response::json(array('action'=>'reset'));