Я пытаюсь изменить свой логин на OTP.
Я отправлю пользователю токен по SMS. Пользователь вводит токен и отправляет для проверки в бэкэнд через AJAX.
Это функция, которая проверяет код:
function verify_token(Request $request){
$token = LoginToken::where('token' , $request->input('token') )->first();
if(!$token)
jerror("cant find the token !") ;
$user = User::findOrFail($token->user_id);
Auth::loginUsingId($token->user_id);
echo json_encode(['success'=>1 , 'redirect'=>URL('/')]);
}
Вот мой AJAX вызов, игнорируйте синтаксические ошибки:
function vrify(){
let form = {
token : $('#token').val() ,
//csrf token
};
$.post( '{{route("verify")}}' , form , function(data){
data = $.parseJson(data);
if(data.success == 1 )
{
document.location = data.redirect ;
}
})
}
Несмотря на то, что проверка прошла успешно, пользователь не войдет в систему после перенаправления.
Если я отправляю данные как обычную форму POST и изменяю последнюю строку функции проверки:
return redirect(URL('/'));
Работает нормально!
Что я делаю не так?