我正在尝试将旧的身份验证形式切换为 Laravel 的身份验证。我正在使用 ajax 调用对用户进行身份验证,并检查他们的密码是否需要重置。
我验证了旧方法,使用 Laravel 的 Auth::login() 手动登录用户。ajax 调用成功后,我重定向到重置密码路由的 url。
现在,当我到达重置通行证路线时,我会检查用户是否已通过身份验证。当我检查重置密码功能时,用户不再经过身份验证。 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');
}
}
重置功能 - Laravel
public static function reset(){
error_log('Check: ' . Auth::check()); // this is now false
}
最佳答案
尝试使用正确的方式返回响应,否则将无法正确设置用户验证的 session 值。
这是返回 JSON 值的方式:
return Response::json(array('action'=>'reset'));
关于javascript - Laravel ajax 身份验证检查工作直到 JS 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23666472/