What is Session in Laravel?

In Laravel, a session is a way to store user-specific data across multiple HTTP requests. It allows you to remember information (like login status, flash messages, or temporary values) while the user navigates your application.

Key Features of Laravel Session

  • Stores data per user, temporarily
  • Automatically managed using session IDs (in cookies)
  • Data is stored on the server, not the browser
  • Works with multiple storage drivers: file, database, redis, etc.

 

Where is Session Configured?

Session settings are defined in:


config/session.php

Default driver:


'driver' => 'file',

Other available drivers:

  • file (default, stored in storage/framework/sessions)
  • database
  • redis
  • array (non-persistent, used for testing)

 

Common Session Operations

Store Data in Session

File: app/Http/Controllers/ExampleController.php


session(['key' => 'value']);

Retrieve Data


$value = session('key');

Check If Session Key Exists


if (session()->has('key')) {
    // Do something
}

Remove Session Data


session()->forget('key');

Destroy Entire Session


session()->flush();

Flash Data (Lasts for Only One Request)


session()->flash('message', 'Data saved successfully!');

Example Use Case in Controller

File: app/Http/Controllers/UserController.php


public function store(Request $request)
{
    session(['user_id' => 101]);
    return redirect('dashboard');
}

public function dashboard()
{
    $userId = session('user_id');
    return view('dashboard', compact('userId'));
}

Session Middleware

Sessions are enabled automatically for routes under the web middleware group in routes/web.php.


Route::middleware(['web'])->group(function () {
    Route::get('/dashboard', 'DashboardController@index');
});