usuarios sesiones sesion por personalizado modificar manejo inactividad fechas edad control comparar cerrar calcular php laravel laravel-4

php - sesiones - modificar login laravel



Laravel-fecha de inicio de sesión y fecha de inicio de sesión del último (4)

En Laravel 5.2+ (probado en 5.6 también) el proceso es un poco diferente. Primero, agregue su oyente al EventServiceProvider:

protected $listen = [ ''Illuminate/Auth/Events/Login'' => [ ''App/Listeners/LogSuccessfulLogin'', ], ];

Entonces hazlo:

php artisan event:generate

Lo cual creará un nuevo oyente en la aplicación / Listeners. Ahora edite su Listener para tocar la fecha en la columna last_login en su tabla de usuarios:

public function handle(Login $event) { $event->user->last_login = date(''Y-m-d H:i:s''); $event->user->save(); }

Asegúrese de que el Oyente creado por Artisan tenga los espacios de nombres correctos en la parte superior. Para este caso particular, los espacios de nombres correctos en su Oyente deben ser:

use Illuminate/Auth/Events/Login; use Illuminate/Queue/InteractsWithQueue; use Illuminate/Contracts/Queue/ShouldQueue;

Sé que hay campos insertados automáticamente (por ejemplo, updated_at y created_at ), pero me preguntaba si existe un método Eloquent timestamp () o la forma de Laravel de producir marcas de tiempo.

Por ejemplo, quiero registrar una marca de tiempo cada vez que un usuario inicia sesión en mi sistema y almacenarlo en la base de datos, para que podamos ver los detalles de la última fecha de inicio de sesión y la hora de cada usuario.


Simplemente agregue este código a continuación en su aplicación / Http / Controllers / Auth / LoginController.php

En la parte superior de tu controlador:

use Carbon/Carbon; use Illuminate/Http/Request;

Y dentro de su controlador ponga esta función a continuación:

public function authenticated(Request $request, $user) { $user->last_login = Carbon::now()->toDateTimeString(); $user->save(); }


Tenía una pregunta similar. En caso de que no sienta la necesidad de usar eventos, puede actualizar la marca de tiempo después de autenticar al usuario. Puse el siguiente código en mi método de controlador que maneja la autenticación del usuario.

if (Auth::attempt(array(''email''=>$email, ''password''=>$password))) { Auth::user()->last_login = new DateTime(); Auth::user()->save(); return Redirect::intended(''/''); } else { return Redirect::to(''account/login''); }

Esto hace el trabajo por mí.


Puede observar el evento auth.login y actualizar el último tiempo de inicio de sesión del usuario. Vea el primer ejemplo en la documentation de eventos para lograr exactamente lo que está tratando de hacer.

Event::listen(''auth.login'', function($user) { $user->last_login = new DateTime; $user->save(); });

Nota : En 4.0, el nombre del evento es user.login . En 4.1, el nombre del evento es auth.login

Actualizar

Depende de usted dónde coloque a sus oyentes de eventos. Si lee la página vinculada a documento, indica:

Entonces, usted sabe cómo registrar eventos, pero es posible que se pregunte dónde registrarlos. No te preocupes, esta es una pregunta común. Desafortunadamente, es una pregunta difícil de responder porque puedes registrar un evento en casi cualquier lugar. Pero, aquí hay algunos consejos. De nuevo, como la mayoría de otros códigos de arranque, puede registrar eventos en uno de sus archivos de inicio como app / start / global.php.

Si sus archivos de inicio están llenos, podría crear un archivo de aplicación / events.php por separado que se incluye desde un archivo de inicio. Esta es una solución simple que mantiene el registro de su evento completamente separado del resto de su arranque. Si prefiere un enfoque basado en clases, puede registrar sus eventos en un proveedor de servicios. Como ninguno de estos enfoques es inherentemente "correcto", elija un enfoque con el que se sienta cómodo según el tamaño de su aplicación.

Mi preferencia personal sería registrarlos dentro de un Proveedor de Servicios, ya que eso los mantendría segregados y para mí es la forma más "Laravel" de hacer las cosas. Si necesita ayuda con proveedores de servicios, consulte this entrada de documentación.

Sin embargo, si realmente quieres poner algo en marcha lo más rápido posible, sería tan fácil para ti registrar ese oyente dentro de app/start/global.php