前言
登錄跳轉(zhuǎn):
不同的用戶在登錄成功之后跳轉(zhuǎn)到不同的網(wǎng)頁當中
例如:網(wǎng)站管理員登錄成功后跳轉(zhuǎn)到網(wǎng)站后臺,vip用戶登錄成功后跳轉(zhuǎn)到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;
分別錄入系統(tǒng)管理員、vip用戶和普通用戶
使用redirectPath和middeware實現(xiàn)安全的登錄跳轉(zhuǎn)
1)app\Http\Controllers\Auth\LoginController.php下復(fù)寫redirectPath方法
判斷登錄的用戶,實現(xiàn)不同的跳轉(zhuǎn)頁
//復(fù)寫redirectPath實現(xiàn)登錄跳轉(zhuǎn)
public function redirectPath()
{
switch (auth()->user()->role) {
case 'admin':
return 'admin/dashboard';
case 'vip':
return 'vip/dashboard';
default:
return '/home';
}
}
2)創(chuàng)建Isvip和Isadmin中間件過濾越權(quán)訪問用戶
php artisan make:middleware Isvip
php artisan make:middleware Isadmin
Isvip
public function handle($request, Closure $next)
{
//如果是vip則往下執(zhí)行邏輯
if(auth()->user()->role === 'vip'){
return $next($request);
}
//不是vip則跳轉(zhuǎn)到首頁
return redirect('/home');
}
Isadmin
public function handle($request, Closure $next)
{
//如果是管理員則往下執(zhí)行邏輯
if(auth()->user()->role === 'admin'){
return $next($request);
}
//不是管理員則跳轉(zhuǎn)到首頁
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']);
優(yōu)化在不使用復(fù)寫redirectPath方法下實現(xiàn)登錄跳轉(zhuǎn)
創(chuàng)建UserRoleRedirect中間件用于不同用戶登錄跳轉(zhuǎn)不同頁面功能實現(xiàn)
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);
}
路由使用結(jié)合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']);
到此這篇關(guān)于Laravel實現(xiàn)登錄跳轉(zhuǎn)功能的文章就介紹到這了,更多相關(guān)Laravel登錄跳轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- laravel 表單驗證實現(xiàn)多個字段組合后唯一
- Laravel 驗證碼認證學習記錄小結(jié)
- laravel 數(shù)據(jù)驗證規(guī)則詳解
- laravel 解決強制跳轉(zhuǎn) https的問題
- Laravel重定向,a鏈接跳轉(zhuǎn),控制器跳轉(zhuǎn)示例
- 解決Laravel使用驗證時跳轉(zhuǎn)到首頁的問題