首页 > 解决方案 > Laravel 6.x,我正在尝试将 URL 主页更改为自定义自己的 URL。因为我正在构建身份验证默认登录和注册

问题描述

当我登录页面时,它会重定向到主页,但我需要根据web.php文件将主页替换为自定义 URL.also 自定义 URL。

web.php文件中

Route::get('/home', 'HomeController@index')->name('home');
Route::get('index/sign',function (){
    return view('login-page');
})->name('login-page');

Route::middleware(['auth','admin'])->group(function () {
    Route::get('index/admin',function (){
        return view('admin');
    });
    Route::get('index/student',function (){
        return view('student');
    });
    Route::get('index/staff',function (){
        return view('staff');
    });
});

RouteServiceProvider.php文件 public const HOME = '/home'; 中 在RegisterController.php文件 protected $redirectTo = RouteServiceProvider::HOME; 中 在LoginController.php文件中

protected function redirectTo()
    {
        if ((Auth::user())->user_role == 'admin')
        {
            return 'admin';
        }
        elseif ((Auth::user())->user_role == 'staff')
        {
            return 'staff';
        }
        elseif ((Auth::user())->user_role == 'student')
        {
            return 'student';
        }
        else
        {
            return redirect('sign');
        }
    }```

标签: laravellaravel-6

解决方案


考虑到@apokryfos 评论,使用命名路由你可以做这样的事情

Route::middleware(['auth','admin'])->group(function () {
  Route::get('index/admin',function (){
    return view('admin');
  })->name('admin');
  Route::get('index/student',function (){
    return view('student');
  })->name('student');
  Route::get('index/staff',function (){
    return view('staff');
  })->name('staff');
});

然后你的 redirectTo 方法可能看起来像这样

protected function redirectTo()
{
    if ((Auth::user())->user_role == 'admin')
    {
        return route('admin');
    }
    elseif ((Auth::user())->user_role == 'staff')
    {
        return route('staff');
    }
    elseif ((Auth::user())->user_role == 'student')
    {
        return route('student');
    }
    else
    {
        return redirect('sign');
    }
}```

推荐阅读