前言
登錄跳轉:
不同的用戶在登錄成功之后跳轉到不同的網頁當中
例如:網站管理員登錄成功后跳轉到網站后臺,vip用戶登錄成功后跳轉到vip頁面
準備工作
用戶表
CREATE TABLE `users` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`role` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'normal',
`email_verified_at` timestamp NULL DEFAULT NULL,
`password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `users_email_unique` (`email`),
KEY `users_role_index` (`role`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
分別錄入系統管理員、vip用戶和普通用戶

使用redirectPath和middeware實現安全的登錄跳轉
1)app\Http\Controllers\Auth\LoginController.php下復寫redirectPath方法
判斷登錄的用戶,實現不同的跳轉頁
//復寫redirectPath實現登錄跳轉
public function redirectPath()
{
switch (auth()->user()->role) {
case 'admin':
return 'admin/dashboard';
case 'vip':
return 'vip/dashboard';
default:
return '/home';
}
}
2)創建Isvip和Isadmin中間件過濾越權訪問用戶
php artisan make:middleware Isvip
php artisan make:middleware Isadmin
Isvip
public function handle($request, Closure $next)
{
//如果是vip則往下執行邏輯
if(auth()->user()->role === 'vip'){
return $next($request);
}
//不是vip則跳轉到首頁
return redirect('/home');
}
Isadmin
public function handle($request, Closure $next)
{
//如果是管理員則往下執行邏輯
if(auth()->user()->role === 'admin'){
return $next($request);
}
//不是管理員則跳轉到首頁
return redirect('/home');
}
app\Http\Kernel.php注冊Isadmin和Isvip中間件
protected $routeMiddleware = [
\Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'admin' => \App\Http\Middleware\Isadmin::class,
'vip' => \App\Http\Middleware\Isvip::class,
];
路由中加入中間件進行訪問過濾
//中間件檢查訪問該目錄admin/dashboard是否為admin用戶,過濾不合格的用戶
Route::get('admin/dashboard', function (){
return view('admin.dashboard');
})->middleware(['auth','admin']);
//中間件檢查訪問該目錄vip/dashboard是否為vip用戶,過濾不合格的用戶
Route::get('vip/dashboard', function (){
return view('vip.dashboard');
})->middleware(['auth','vip']);
優化在不使用復寫redirectPath方法下實現登錄跳轉
創建UserRoleRedirect中間件用于不同用戶登錄跳轉不同頁面功能實現
php artisan make:middleware UserRoleRedirect
UserRoleRedirect邏輯代碼
public function handle($request, Closure $next)
{
switch (auth()->user()->role) {
case 'admin':
return redirect('admin/dashboard');
case 'vip':
return redirect('vip/dashboard');
default:
break;
}
return $next($request);
}
路由使用結合admin和vip中間件過濾
Route::get('/home', function () {
return view('welcome');
})->middleware(['auth','auth.redirect']);
Auth::routes();
//中間件檢查訪問該目錄admin/dashboard是否為admin用戶,過濾不合格的用戶
Route::get('admin/dashboard', function (){
return view('admin.dashboard');
})->middleware(['auth','admin']);
//中間件檢查訪問該目錄vip/dashboard是否為vip用戶,過濾不合格的用戶
Route::get('vip/dashboard', function (){
return view('vip.dashboard');
})->middleware(['auth','vip']);
到此這篇關于Laravel實現登錄跳轉功能的文章就介紹到這了,更多相關Laravel登錄跳轉內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- laravel 表單驗證實現多個字段組合后唯一
- Laravel 驗證碼認證學習記錄小結
- laravel 數據驗證規則詳解
- laravel 解決強制跳轉 https的問題
- Laravel重定向,a鏈接跳轉,控制器跳轉示例
- 解決Laravel使用驗證時跳轉到首頁的問題