Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Bernardo_Ortiz's avatar

Session not Persisting after user is logged in

I've hit this wall for quite some time now. I'm building an app with vue on front and laravel on back, using sanctum for authentication. My login function works fine, but when the user is redirect and I try to obtain it via Auth::user(), it returns undefined, but in the login function, I try the same thing and it returns the user to me before changing pages

 handleLogin() {
            axios.get('/sanctum/csrf-cookie').then(response => {
                axios.post('/login', {
                email: this.formData.email,
                password: this.formData.password
                }
                ).then(response => {
                    window.localStorage.setItem('token', response.data.token);
                    this.$router.push({ name: 'studentIndex' });
                }).catch(error => {
                    this.$swal({
                        title: 'Error',
                        text: 'Email ou senha incorretos',
                        icon: 'error'
                    });
                });
            });
        },

The request for login

   public function login(Request $request)
    {
        $credentials = $request->only('email', 'password');
        if (Auth::attempt($credentials)) {
            $user = Auth::user();
            $request->session()->regenerate();
            $token = $user->createToken('token-name')->plainTextToken;
            return response()->json([
                'status' => 'success',
                'token' => $token,
                'user' => $user, // the user is being returned and I can see it in the console
            ], 200);
        } else {
            return response()->json([
                'status' => 'error',
                'message' => 'Invalid credentials',
            ], 401);
        }
    }



Route::get('/login', [LoginController::class, 'index'])->name('login');
Route::get('/register', [RegisterController::class, 'index'])->name('register');
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');

Routes in web.php


 protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Illuminate\Http\Middleware\HandleCors::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array<string, array<int, class-string|string>>
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

Middlewares in kernel.php

APP_URL=localhost

SESSION_DRIVER=cookie

SESSION_DOMAIN=localhost

SESSION_LIFETIME=120

SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1,localhost:8000,127.0.0.1:8000

    'paths' => [
        'api/*', 
        '/login',
        '/logout',
        '/sanctum/csrf-cookie',
        ],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true

cors

Also, my login route is not applied to the VerifyCsrfToken, if that's relevant

I tried Auth::user in other places to see if the test, and undefined is being returned

0 likes
0 replies

Please or to participate in this conversation.