Laravel實(shí)現(xiàn)登錄跳轉(zhuǎn)功能
前言
登錄跳轉(zhuǎn):
不同的用戶在登錄成功之后跳轉(zhuǎn)到不同的網(wǎng)頁(yè)當(dāng)中
例如:網(wǎng)站管理員登錄成功后跳轉(zhuǎn)到網(wǎng)站后臺(tái),vip用戶登錄成功后跳轉(zhuǎn)到vip頁(yè)面
準(zhǔn)備工作
用戶表
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實(shí)現(xiàn)安全的登錄跳轉(zhuǎn)
1)app\Http\Controllers\Auth\LoginController.php下復(fù)寫(xiě)redirectPath方法
判斷登錄的用戶,實(shí)現(xiàn)不同的跳轉(zhuǎn)頁(yè)
//復(fù)寫(xiě)redirectPath實(shí)現(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中間件過(guò)濾越權(quán)訪問(wè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)到首頁(yè) return redirect('/home'); }
Isadmin
public function handle($request, Closure $next) { //如果是管理員則往下執(zhí)行邏輯 if(auth()->user()->role === 'admin'){ return $next($request); } //不是管理員則跳轉(zhuǎn)到首頁(yè) return redirect('/home'); }
app\Http\Kernel.php注冊(cè)Isadmin和Isvip中間件
protected $routeMiddleware = [ \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'admin' => \App\Http\Middleware\Isadmin::class, 'vip' => \App\Http\Middleware\Isvip::class, ];
路由中加入中間件進(jìn)行訪問(wèn)過(guò)濾
//中間件檢查訪問(wèn)該目錄admin/dashboard是否為admin用戶,過(guò)濾不合格的用戶 Route::get('admin/dashboard', function (){ return view('admin.dashboard'); })->middleware(['auth','admin']); //中間件檢查訪問(wèn)該目錄vip/dashboard是否為vip用戶,過(guò)濾不合格的用戶 Route::get('vip/dashboard', function (){ return view('vip.dashboard'); })->middleware(['auth','vip']);
優(yōu)化在不使用復(fù)寫(xiě)redirectPath方法下實(shí)現(xiàn)登錄跳轉(zhuǎn)
創(chuàng)建UserRoleRedirect中間件用于不同用戶登錄跳轉(zhuǎn)不同頁(yè)面功能實(shí)現(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中間件過(guò)濾
Route::get('/home', function () { return view('welcome'); })->middleware(['auth','auth.redirect']); Auth::routes(); //中間件檢查訪問(wèn)該目錄admin/dashboard是否為admin用戶,過(guò)濾不合格的用戶 Route::get('admin/dashboard', function (){ return view('admin.dashboard'); })->middleware(['auth','admin']); //中間件檢查訪問(wèn)該目錄vip/dashboard是否為vip用戶,過(guò)濾不合格的用戶 Route::get('vip/dashboard', function (){ return view('vip.dashboard'); })->middleware(['auth','vip']);
到此這篇關(guān)于Laravel實(shí)現(xiàn)登錄跳轉(zhuǎn)功能的文章就介紹到這了,更多相關(guān)Laravel登錄跳轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決tp5在nginx下修改配置訪問(wèn)的問(wèn)題
今天小編就為大家分享一篇解決tp5在nginx下修改配置訪問(wèn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10利用PHP腳本在Linux下用md5函數(shù)加密字符串的方法
這篇文章主要介紹了利用PHP腳本在Linux下用md5函數(shù)加密字符串的方法,只需Linux系統(tǒng)中安裝過(guò)PHP然后在命令行中操作文中示例即可,需要的朋友可以參考下2015-06-06Yii框架使用魔術(shù)方法實(shí)現(xiàn)跨文件調(diào)用功能示例
這篇文章主要介紹了Yii框架使用魔術(shù)方法實(shí)現(xiàn)跨文件調(diào)用功能,涉及Yii框架中php面向?qū)ο蟪绦蛟O(shè)計(jì)相關(guān)操作技巧,需要的朋友可以參考下2017-05-05laravel通過(guò)創(chuàng)建自定義artisan make命令來(lái)新建類文件詳解
Laravel通過(guò)Artisan提供了強(qiáng)大的控制臺(tái)命令來(lái)處理非瀏覽器業(yè)務(wù)邏輯。下面這篇文章主要給大家介紹了關(guān)于laravel如何通過(guò)創(chuàng)建自定義artisan make命令來(lái)新建類文件的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-08-08php ZipArchive壓縮函數(shù)詳解實(shí)例
在php中生成zip文件我們只要使用一個(gè)php zip壓縮ZipArchive函數(shù)就可以了,下面小編來(lái)給大家總結(jié)兩個(gè)實(shí)現(xiàn)一個(gè)是利用ZipArchive生成zip,另一個(gè)壓縮文件夾下所有文件2013-11-11thinkphp中ajax與php響應(yīng)過(guò)程詳解
這篇文章主要介紹了thinkphp中ajax與php響應(yīng)過(guò)程,以實(shí)例形式詳細(xì)分析了ThinkPHP框架中Ajax響應(yīng)方式的處理原理及實(shí)現(xiàn)過(guò)程,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12完美的2個(gè)php檢測(cè)字符串是否是utf-8編碼函數(shù)分享
這篇文章主要介紹了完美的2個(gè)php檢測(cè)字符串是否是utf-8編碼函數(shù)分享,一個(gè)比較強(qiáng)大、一個(gè)比較簡(jiǎn)潔,需要的朋友可以參考下2014-07-07