【问题标题】:Best practice to redirect Laravel home to another URL?将 Laravel 主页重定向到另一个 URL 的最佳实践?
【发布时间】:2020-11-07 01:19:28
【问题描述】:

如何将 Laravel 7 身份验证主页 URL 重定向到仪表板。

我的路由文件 route/web.php

use Illuminate\Support\Facades\Route;    

Auth::routes();
Route::get('/dashboard', 'HomeController@index')->name('dashboard');
Route::get('/', function () {
    return view('/home');
})->middleware('auth');

MyLogin 控制器看起来像这样

namespace App\Http\Controllers\Auth;    
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected $redirectTo = RouteServiceProvider::HOME;

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}

【问题讨论】:

    标签: redirect routes laravel-7 laravel-authentication laravel-7.x


    【解决方案1】:

    花了几个小时后,我找到了以下解决方案

    只需在 app\Providers\RouteServiceProvider.php 中进行更改

    public const HOME = '/home';
    

    public const DASHBOARD = '/dashboard';
    

    然后在另一个文件中做一些小改动,即 app\Http\Controllers\Auth\LoginController.php

    protected $redirectTo = RouteServiceProvider::HOME;
    

    protected $redirectTo = RouteServiceProvider::DASHBOARD;
    

    在 app\Http\Middleware\RedirectIfAuthenticated.php 中进行最后的更改

     public function handle($request, Closure $next, $guard = null)
        {
            if (Auth::guard($guard)->check()) {
                return redirect(RouteServiceProvider::HOME);
            }
    
            return $next($request);
        }
    

    public function handle($request, Closure $next, $guard = null)
        {
            if (Auth::guard($guard)->check()) {
                return redirect(RouteServiceProvider::PARTNERS);
            }
    
            return $next($request);
        }
    

    改变你的路线

    Route::get('/', function () {
        return redirect('/dashboard');    
    })->middleware('auth');
    

    不要打开 CMD 并在项目文件夹中运行命令 php artisan optmize:clear 并通过登录现在检查。

    【讨论】:

    • 不需要将常量HOME更改为DASHBOARD,只需将值从/home更改为/dashboard即可。而对于默认根路由,只需使用常量HOME,如return redirect(App\Providers\RouteServiceProvider::HOME);
    【解决方案2】:

    如此简单的解决方案是:

    use Illuminate\Support\Facades\Route;    
    
    Auth::routes();
    Route::get('/dashboard', 'HomeController@index')->name('dashboard');
    Route::get('/', 'HomeController@index');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 2010-12-27
      • 1970-01-01
      • 2012-03-23
      • 2018-10-21
      • 2012-03-01
      相关资源
      最近更新 更多