Artigos

Que son as sesións en Laravel, configuración e uso con exemplos

As sesións de Laravel permítenche almacenar información e intercambiala entre solicitudes na túa aplicación web. 

Son un xeito sinxelo de conservar os datos do usuario actual. Este titorial darache os conceptos básicos de traballar con sesións en Laravel.

Que é a sesión Laravel

En Laravel, unha sesión é unha forma de almacenar información, de xestionar correctamente as solicitudes realizadas por un usuario. Cando un usuario inicia unha aplicación Laravel, unha sesión comeza automaticamente para ese usuario. Os datos da sesión almacénanse no servidor e envíase unha pequena cookie cun identificador único ao navegador do usuario para identificar a sesión.

Podes usar a sesión para almacenar os datos que queres usar en varias páxinas ou solicitudes. Por exemplo, pode usar a sesión para a autenticación do usuario ou almacenar outra información que desexe usar durante a sesión na súa aplicación.

Configuración da sesión en Laravel

Para usar sesións en Laravel, primeiro debes activalas no ficheiro config/session.php de configuración. Neste ficheiro é posible establecer parámetros de configuración relacionados coas sesións. Como a duración da sesión, o controlador que se utilizará para almacenar os datos da sesión e a localización de almacenamento dos datos da sesión. 

O ficheiro ten as seguintes opcións de configuración:
  • condutor: Especifica o controlador previo á sesióndefilisto para usar. Laravel admite varios controladores de sesión: ficheiro, cookie, base de datos, apc, memcached, redis, dynamodb e array;
  • vida: Especifica o número de minutos nos que a sesión debe considerarse válida;
  • expire_on_close: Se se define como verdadeiro, a sesión caducará cando se peche o navegador do usuario;
  • cifrar: verdadeiro significa que o marco cifrará os datos da sesión antes de almacenalos;
  • arquivos: Se se usa o controlador de sesión de ficheiros, esta opción especifica a localización de almacenamento do ficheiro;
  • conexión: Se se usa o controlador de sesión de base de datos, esta opción especifica a conexión de base de datos a utilizar;
  • táboa: Se se usa o controlador de sesión de base de datos, esta opción especifica a táboa de base de datos que se utilizará para almacenar os datos da sesión;
  • lotería: unha matriz de valores utilizados para seleccionar aleatoriamente un valor de cookie de ID de sesión;
  • biscoito: Esta opción especifica o nome da cookie que se utilizará para almacenar o ID da sesión. As opcións ruta, dominio, segura, http_only e same_site úsanse para configurar a configuración de cookies para a sesión.

A continuación móstrase un exemplo dun ficheiro sessions.php cunha duración da sesión de 120 segundos, uso dos ficheiros almacenados no directorio framework/sessions:

<?php

use Illuminate\Support\Str;

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE'),
    'http_only' => true,

    'same_site' => 'lax',

];

Tamén pode configurar a sesión usando variables de ambiente no ficheiro .env. Por exemplo, para usar o controlador de sesión de base de datos e almacenar os datos de sesión nunha táboa de sesión, con base de datos de tipo MySQL, pode establecer as seguintes variables de ambiente:

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions

Configuración da sesión Laravel

Hai tres formas de traballar con datos de sesión en Laravel: 

  • usando ohelper de global session;
  • usando a fachada da Sesión;
  • a través de a Request instance

En todos estes casos, os datos que almacene na sesión estarán dispoñibles en solicitudes posteriores realizadas polo mesmo usuario ata que a sesión caduque ou sexa destruída manualmente.

Boletín de innovación
Non te perdas as novidades máis importantes sobre innovación. Rexístrese para recibilos por correo electrónico.

Asistente de sesión global

En Laravel, usando a función Global Session Helper é un xeito cómodo de acceder aos servizos de sesión proporcionados polo framework. Permítelle almacenar e recuperar datos da sesión na súa aplicación. Aquí tes un exemplo de como usar o session helper:

// Store data in the session
session(['key' => 'value']);

// Retrieve data from the session
$value = session('key');

// Remove data from the session
session()->forget('key');

// Clearing the Entire Session
session()->flush();

Tamén pode pasar un valor predefinite como segundo argumento da función session, que se devolverá se a chave especificada non se atopa na sesión:

$value = session('key', 'default');

Instancia de Session Request

En Laravel, unha instancia de solicitude de sesión refírese a un obxecto que representa unha solicitude HTTP e contén información sobre a solicitude, como o método de solicitude (GET, POST, PUT, etc.), o URL da solicitude, as cabeceiras da solicitude e o corpo da solicitude. . Tamén contén varios métodos que se poden utilizar para recuperar e manipular esta información.

Normalmente accede á instancia do Session Request a través da variable $request nunha aplicación Laravel. Por exemplo, pódese acceder a unha sesión a través dunha instancia de solicitude mediante a función auxiliar session().

use Illuminate\Http\Request;

class ExampleController extends Controller
{
   public function example(Request $request)
   {
       // Store data in the session using the put function
       $request->session()->put('key', 'value');

       // Retrieve data from the session using the get function
       $value = $request->session()->get('key');

       // Check if a value exists in the session using the has function:
       if ($request->session()->has('key')) {
           // The key exists in the session.
       }

       // To determine if a value exists in the session, even if its value is null:
       if ($request->session()->exists('users')) {
           // The value exists in the session.
       }

       // Remove data from the session using the forget function
       $request->session()->forget('key');
    }
}

Neste exemplo, a variable  $request é unha instancia da clase Illuminate\Http\Request, que representa a solicitude HTTP actual. A función session request instance devolve unha instancia da clase Illuminate\Session\Store, que ofrece varias funcións para traballar coa sesión.

Ercole Palmeri

Boletín de innovación
Non te perdas as novidades máis importantes sobre innovación. Rexístrese para recibilos por correo electrónico.

Artigos recentes

O futuro está aquí: como a industria do transporte marítimo está revolucionando a economía global

O sector naval é unha verdadeira potencia económica mundial, que navega cara a un mercado de 150 millóns...

1 maio 2024

Editores e OpenAI asinan acordos para regular o fluxo de información procesada pola Intelixencia Artificial

O pasado luns, o Financial Times anunciou un acordo con OpenAI. FT licencia o seu xornalismo de clase mundial...

Abril 30 2024

Pagos en liña: aquí tes como os servizos de streaming che fan pagar para sempre

Millóns de persoas pagan por servizos de streaming, pagando taxas de subscrición mensuais. É unha opinión común que vostede...

Abril 29 2024

Veeam ofrece o soporte máis completo para ransomware, desde a protección ata a resposta e a recuperación

Coveware by Veeam continuará ofrecendo servizos de resposta a incidentes de extorsión cibernética. Coveware ofrecerá capacidades forenses e de remediación...

Abril 23 2024