es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo definir la ruta de redirección para usuarios no autenticados de un guardia de autenticación personalizado en Laravel 8 utilizando Jetstream y Fortify.

He definido dos autenticadores diferentes llamados ‘siteusers’ y ‘staffusers’ en mi portal basado en Laravel 8 en el que estoy usando Jetstream y Fortify para la autenticación basada en sesiones.

Ahora, tengo dos estructuras diferentes de URL para ambos tipos de usuarios:

  1. www.sitename.com/siteusers/dashboard
  2. www.sitename.com/staffusers/dashboard

Me gustaría establecer un algoritmo que si alguien hace clic en el primer enlace de arriba (sin haber iniciado sesión), entonces debería ser redirigido a:

  • www.sitename.com/siteusers/login

Si alguien hace clic en el segundo enlace (sin haber iniciado sesión), entonces debería ser redirigido a:

  • www.sitename.com/staffusers/login

¿Es posible en la versión actual de Fortify?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible lograr esta funcionalidad de redireccionamiento en la versión actual de Fortify. Puedes hacer uso del middleware de Fortify para redirigir al usuario a la página de inicio de sesión correspondiente según la URL a la que acceda.

    Aquí tienes los pasos que puedes seguir:

    1. Define dos guards ‘siteusers’ y ‘staffusers’ en tu aplicación Laravel 8.
    2. Crea dos rutas diferentes para las páginas de inicio del panel de control para ambos tipos de usuarios. Por ejemplo, puedes definir las rutas de la siguiente manera:

      Route::middleware(['auth:siteusers'])->group(function () {
          Route::get('/siteusers/dashboard', [SiteuserController::class, 'dashboard']);
      });
      
      Route::middleware(['auth:staffusers'])->group(function () {
          Route::get('/staffusers/dashboard', [StaffuserController::class, 'dashboard']);
      });
      

    3. Define el middleware para verificar si el usuario está autenticado y redirigir a la página de inicio de sesión correspondiente en caso contrario. Por ejemplo, puedes definir un middleware de la siguiente manera:
      namespace App\Http\Middleware;
      
      use Closure;
      use Illuminate\Http\Request;
      use Illuminate\Support\Facades\Auth;
      
      class RedirectIfNotAuthenticated
      {
          public function handle(Request $request, Closure $next)
          {
              if (Auth::guard('siteusers')->guest() && $request->is('siteusers/*')) {
                  return redirect()->guest('/siteusers/login');
              }
      
              if (Auth::guard('staffusers')->guest() && $request->is('staffusers/*')) {
                  return redirect()->guest('/staffusers/login');
              }
      
              return $next($request);
          }
      }
      
    4. Registra el middleware en tu archivo Kernel.php. Por ejemplo, puedes agregar el middleware al array $routeMiddleware de la siguiente manera:
      protected $routeMiddleware = [
          'auth' => Authenticate::class,
          'auth.siteusers' => \App\Http\Middleware\RedirectIfNotAuthenticated::class,
          'auth.staffusers' => \App\Http\Middleware\RedirectIfNotAuthenticated::class,
      ];
      
    5. Ahora, cuando un usuario acceda a la URL siteusers/dashboard o staffusers/dashboard y no esté autenticado, el middleware lo redirigirá a la página de inicio de sesión correspondiente.

    Con los pasos anteriores, puedes lograr la funcionalidad de redireccionamiento requerida según el tipo de usuario.

Comments are closed.