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

critic's avatar

Laravel Authentication Not Persisting

I have "Laravel Authentication Not Persisting" issue AND i cannot figure out whats wrong - NEED HELP!!! PHP VERSION IS 8.2

I dont have Auth::logout anywhere and after reload session is gone. No errors in /storage/logs/laravel.log file I also have session files /storage/framework/sessions session file content is:

a:4:{s:6:"_token";s:40:"anEzZsBNvEmQuqvUHOH6NivbECNqM2J5oD4PpEYR";s:3:"url";a:1:{s:8:"intended";s:34:"https://arikonto.projectpartner.ee";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:9:"_previous";a:1:{s:3:"url";s:40:"https://arikonto.projectpartner.ee/login";}}

routes/web.php

Route::get('/login', function () {
    return view('login');
})->name('login');

Route::post('/login', [\App\Http\Controllers\IndexController::class, 'Auth']);

Route::middleware(['auth'])->group(function(){

    Route::get('/', function () {
        return view('welcome');
    });

    Route::get('/suva', function () {

        die('suva');
        return null;
    });
});

HTML html has <input name="_token" type="hidden" value="nl0mUF8lz0ALiUgGxHGoiuvNCBHApVJSUUSESHtR">

AUTH

public function Auth(Request $request): RedirectResponse { 

$credentials = $request->validate([ 'username' => ['required'], 'password' => ['required'], ]);

    if (Auth::attempt(['name' => $credentials['username'], 'password' => $credentials['password'], 'is_enabled' => 1])) {

        $request->session()->regenerate();

        Session::put('mytest', 'hello');

        //return redirect()->intended('suva');
        return redirect('/suva');
    }
}

KERNEL

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, ],

    'api' => [
        // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
        \Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],
];
0 likes
7 replies
Snapey's avatar

please format your code blocks

three backticks ``` on their own line before and after code

Look in your browser and check that a laravel_session cookie is being created

critic's avatar

it is created.

name: arikonto_session
value: eyJpdiI6IkgxTnhEQ0FHWkR3S2NEMEd1UXBiNlE9PSIsInZhbHVlIjoieVJwc2VRTGorN3BiVThnOE9EQUJscURPTXBBczJuMUtlVEdLMjBJWWJOVjlMNW5FbXhFYUpCUW51OFNNQTBPNlJkK2tTNU9ZWnNBZ1VvTFBJcXZSYXpVZ0cvR0VRaUJVQ2FPOS9lLzA4SzZZRFFJcHE4dEJsRjg3TE43Y1dYYmgiLCJtYWMiOiI5ZTIwYzZhOTJlNWQ1YmE5YWI2MWY4MjI2NDdjZDg3ZWZkNmYwNjRiNTk0MDAxMTRjZjQyMmNlYmE1MWM3ZjE3IiwidGFnIjoiIn0%3D
.projectpartner.ee
expires: 2023-10-31T12:13:06.587Z

.env file settings

APP_NAME=arikonto
APP_ENV=local
APP_KEY=base64:F4N1l+OwrIJtbfGur8J2q0LYtDbSgRBW7bTo1AuAA5M=
APP_DEBUG=true
APP_URL=https://arikonto.projectpartner.ee
APP_LOG_LEVEL=notice
DEBUGBAR_ENABLED=false
APP_TIMEZONE=Europe/Tallinn
APP_LOCALE=et
APP_FAKER_LOCALE=et_EE
DEBUG_BLACKLIST=APP_KEY,DB_PASSWORD,DB_PASSWORD_SECOND,REDIS_PASSWORD,MAIL_PASSWORD,MONGO_DB,MONGO_DSN,LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=***
DB_PORT=3306
DB_DATABASE=***
DB_USERNAME=***
DB_PASSWORD=***

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_DOMAIN=.projectpartner.ee
SESSION_SECURE_COOKIE=false

MEMCACHED_HOST=127.0.0.1

REDIS_CLIENT=predis
REDIS_HOST=
REDIS_PASSWORD=
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=eu

VITE_APP_NAME="${APP_NAME}"
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

Snapey's avatar

why are you setting session domain? Is this the correct domain for your test environment

Snapey's avatar

i dont see mytest=>hello in your session file, and you don't handle login failure. Are you sure you are being authenticated?

critic's avatar

This is the full AuthController

<?php

namespace App\Http\Controllers;

use App\Models\user;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;

class IndexController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    public function Auth(Request $request): RedirectResponse
    {
        $credentials = $request->validate([
            'username' => ['required'],
            'password' => ['required'],
        ]);

        if (Auth::attempt(['name' => $credentials['username'], 'password' => $credentials['password'], 'is_enabled' => 1])) {

            $request->session()->regenerate();

            //return redirect()->intended('suva');
            return redirect('/suva');
        }

        /*
        $user = user::where('name', $credentials['username'])
            ->where('password', md5($credentials['password']))
            ->where('is_enabled', 1)
            ->first();

        if( !empty($user) ) {

            //$request->session()->regenerate();

            //die(pre($user));
            Auth::login($user);
            //$this->guard()->login($user, $request->has('remember'));

            //die(pre(Auth::user()));

            return redirect('/suva');
        }
        */

        return back()->withErrors([
            'username' => 'Sisselogimine ebaõnnestus',
        ])->onlyInput('username');
    }

    public function Login(Request $request)
    {
        return view('login');
    }

    public function NotFound()
    {
        return response(['error' => true, 'error-msg' => 'not found'], 404);
    }

    //
}

critic's avatar

I installed from beginning additionally i installed laravel/ui

and now it worked

Please or to participate in this conversation.