如何使用 Jetstream 和 Fortify 在 Laravel8 中为自定义 auth guard 的未经身份验证的用户定义重定向路径

How to define redirect path for unauthenticated users of custom auth guard in Laravel8 using Jetstream and Fortify

我在基于 Laravel 8 的门户中定义了两个不同的身份验证守卫,称为 'siteusers' 和 'staffusers',我在其中使用 Jetstream 和 Fortify 进行基于会话的身份验证。

现在,我有两种不同的 URL 结构供两种类型的用户使用

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

我想设置一个算法,如果有人从上方点击第一个 link(但未登录),那么他应该被重定向到

如果有人点击第二个 link(未登录),那么他应该被重定向到

在 Fortify 的当前版本中可以吗?

转到app\http\middleware\Authenticate。php

在 class

开始之前添加关注
use Illuminate\Support\Facades\Route;

然后将 redirectTo 函数中的所有内容替换为以下代码

    $routeMiddleware = Route::current()->middleware();
    // Example Output : Array ( [0] => web [1] => auth:siteusers [2] => verified )
    $route = explode(":", $routeMiddleware[1]);
    $routeName = $route[1];
    if (!$request->expectsJson()) {
        if ($routeName == 'siteusers')
            return route('siteusers.login');
        else
            return route('staffusers.login');
    }

做出的假设:

  1. 站点用户登录路由名称:siteusers.login
  2. 工作人员登录路由名称:staffusers.login
  3. Siteusers 的 Auth Guard 名称:siteusers

您可以用实际值替换这些值