Php 将用户重定向到基于其角色的视图
我有三个用户角色: -管理员 -指导员 -学生 我需要将管理员和讲师重定向到管理员面板视图,然后将学生重定向到其他视图。有人能推荐我做这件事的最佳方式吗?我是拉雷维尔的新手,正在努力理解如何才能让这一切顺利进行。谢谢 我现在的web.php是Php 将用户重定向到基于其角色的视图,php,laravel,routes,Php,Laravel,Routes,我有三个用户角色: -管理员 -指导员 -学生 我需要将管理员和讲师重定向到管理员面板视图,然后将学生重定向到其他视图。有人能推荐我做这件事的最佳方式吗?我是拉雷维尔的新手,正在努力理解如何才能让这一切顺利进行。谢谢 我现在的web.php是 <?php use Illuminate\Support\Facades\Route; Route::redirect('/', '/login'); Auth::routes(); Route::get('/home', 'HomeCont
<?php
use Illuminate\Support\Facades\Route;
Route::redirect('/', '/login');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::namespace('Admin')->prefix('admin')->name('admin.')->group(function(){
Route::middleware('can:manage_users')->group(function(){
Route::resource('/users', 'UsersController'); //URL to access, followed by controller created
Route::resource('/courses', 'CoursesController');
Route::resource('/modules', 'ModulesController');
});
});
您可以覆盖登录控制器中的authenticated()
函数
protected function authenticated(Request $request, $user)
{
if ($user->hasRole('admin') ) {
$this->redirectTo = route('admin.dashboard');
}elseif($user->hasRole('instructor'))
{
$this->redirectTo = route('instructor.dashboard');
}elseif($user->hasRole('student'))
{
$this->redirectTo = route('student.dashboard');
}
}
您可以像这样编辑中间件/RedirectIfAuthenticated.php
public function handle($request, Closure $next, $guard = null)
{
if ( \Auth::check() && \Auth::user()->hasRole('admin')) {
return redirect()->route('admin.dashboard');
}elseif(\Auth::check() && \Auth::user()->hasRole('instructor')) {
return redirect()->route('instructor.dashboard');
}elseif(\Auth::check() && \Auth::user()->hasRole('student')) {
return redirect()->route('student.dashboard');
}
return $next($request);
}
您可以在web.php中定义admin.dashboard、讲师.dashboard、学生.dashboard
路由谢谢您的帮助,您能建议我在web.php中是否有具体的定义方法吗?我是拉雷维尔的新手,非常感谢你的帮助。