Laravel - Auth::attempt() 未设置会话数据以使用 Auth::user() 访问

时间:2021-06-07 15:11:59

标签: php laravel

通常我使用 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 中间件)。不明白怎么回事。

谁能帮我找出问题所在?

0 个答案:

没有答案