Laravel實現(xiàn)登錄跳轉(zhuǎn)功能
前言
登錄跳轉(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php+jQuery+Ajax簡單實現(xiàn)頁面異步刷新
這篇文章主要為大家詳細介紹了php+jQuery+Ajax簡單實現(xiàn)頁面異步刷新,,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-08-08
基于PHP Web開發(fā)MVC框架的Smarty使用說明
本篇文章小編為大家介紹,基于PHP Web開發(fā)MVC框架的Smarty使用說明。需要的朋友參考下2013-04-04
ThinkPHP+EasyUI之ComboTree中的會計科目樹形菜單實現(xiàn)方法
下面小編就為大家?guī)硪黄猅hinkPHP+EasyUI之ComboTree中的會計科目樹形菜單實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
詳解no input file specified 三種解決方法
這篇文章主要介紹了詳解no input file specified 三種解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

