通常我使用 Laravel 默认身份验证系统,我的意思是在登录表单操作中添加 route('login')
,以处理基于 Laravel 的应用程序中的登录。现在我正在尝试使用 Axios
进行登录。一切正常,但由于未知原因,它没有设置/启动会话数据(可通过 Auth::user() 访问)。
这是Axios的代码:
const loginButton = document.querySelector('#loginButton');
loginButton.addEventListener('click', () => {
const api_version = document.querySelector('#api_version').value;
const api_url = document.querySelector('#api_url').value;
const username = document.querySelector('#username').value;
const password = document.querySelector('#password').value;
let url = api_url + 'api/' + api_version + '/custom_login';
let data = {
username: username,
password: password
};
const headers = {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
axios.post(url, data, {
headers: headers
})
.then(function (response) {
console.log(response.data);
if( parseInt( response.data.http_code ) === 200 ) {
location.href = "{{ route('home') }}";
}
})
.catch(function (error) {
console.log(error);
});
});
这是控制器中登录背后的代码:
try {
if( Auth::attempt(['username' => $username, 'password' => $password]) ) {
$content['user_name'] = Auth::user()->forename;
$content['http_code'] = '200';
$content['status'] = 'success';
} else {
$content['http_code'] = '403';
$content['status'] = 'Forbidden';
}
} catch( Exception $e ) {
$content['http_code'] = '500';
$content['status'] = $e->getMessage();
}
我收到了 http_code: 200
作为响应,这意味着登录正在工作,但是当它尝试在主路由上重定向时,它返回到登录页面(因为 HomeController 使用 auth 中间件)。不明白怎么回事。
谁能帮我找出问题所在?