如果我从 Laravel 的端口服务器中删除“/dashboard”,如何将用户重定向到仪表板?

How to redirect the user to dashboard if i remove the "/dashboard" from the port server in Laravel?

我的端口服务器是我的登录界面。 * http://127.0.0.1:8000/* That is my login part, after entering my details it will redirect me to my dashboard http://127.0.0.1:8000/dashboard。但是,如果我从 url 中删除 /dashboard 它 return 让我重新登录,即使我还在在会话中,尚未单击注销按钮。如果我再次将 /dashboard 放入仪表板,因为用户仍在会话中。即使删除 /dashboard,我也想 return 到仪表板。如何在 Laravel 中做到这一点?

在您的 RouteServiceProvider 中,HOME 是否设置为“/dashboard”?

public const HOME = '/dashboard';
  • 中间件可以为您完成这项工作。关注
  1. 首先,你必须创建一个中间件。
php artisan make:middleware RedirectIfUserAuthenticated
  1. 在内核注册你的中间件:
 protected $routeMiddleware = [
    ..............................
    'auth.backend' => Middleware\RedirectIfUserAuthenticated::class,
 ];
  1. 在您希望用户通过身份验证的路由或控制器上调用您的中间件可以在他们登录后看到。
Route::group(['middleware' => ['auth.backend'], function () {
     // Add your routes except login route.
}]);
  1. 让我们将一些代码添加到我们创建的中间件中:RedirectIfUserAuthenticated
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfUserAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (auth()->check()) {
            return redirect()->to('/dashboard');
        }

        return $next($request);
    }
}
 
  • 重要提示:您可以将中间件 auth 添加到您的路由中,如果您不想创建新的路由,这也可以正常工作: 定位于:Middlewares/Authenticat.php 并根据需要自定义。
Route::group(['middleware' => ['auth'], function () {
     // Add your routes except login route.
}]);

完成!

您可以将 guest 中间件添加到您的 / 路由或您希望将“经过身份验证”的用户发送到“仪表板”的任何路由:

Route::get('/', ...)->middleware('guest');

根据版本,这已经将任何经过身份验证的用户重定向到 /dashboard