好了,你需要的是創造AdminMiddleware
並將其添加到路由。
首先,打開你的User
模型,並添加額外的方法到它:
public function isAdmin()
{
return $this->RoleID == 1;
}
現在在控制檯中運行:
php artisan make:middleware AdminMiddleware
打開AdminMiddleware.php
和更改handle
方法,所以它應該看起來像這個:
if (!\Auth::user()->isAdmin()) {
if ($request->ajax()) {
return response('Admin account required.', 401);
} else {
return redirect('/'); // set here any url you need
}
}
return $next($request);
現在打開app/Http/Kernel.php
,並添加到$routeMiddleware
物業新條目:
'isAdmin' => \App\Http\Middleware\AdminMiddleware::class,
最後修改成你的路線
'middleware' => 'auth',
到
'middleware' => ['auth', 'isAdmin'],
這裏的順序很重要,如果你更改訂單在這裏,如果用戶沒有登錄,你會得到意外的異常。
根據您的需要,您可能還希望僅在此處使用isAdmin
中間件,以防此用戶未登錄時此路由要進行其他重定向而不是auth
。在這種情況下,您需要合併auth
和isAdmin
中的方法並使其符合您的需求。
@Helper當用戶不是管理員時,它是否發ha?如果是這樣,你有'/'url來定義任何中間件嗎?您應該在'AdminMiddleware'中重定向到您不使用'isAdmin'中間件的路由 –
如果用戶登錄但不是admin,並且命中由'isAdmin'保護的路由,它將被重定向到'/',之後它們將被重定向再次到'/' - 這就是爲什麼你得到這個。你應該在'AdminMiddleware'中使用新的路由,例如'restricted',並創建新的路由'restricted',在那裏你顯示這個頁面只限於Admin,或者你應該使用重定向到主要url登錄用戶 –
http:// stackoverflow。 COM /問題/ 34560621 /調用到未定義-方法照亮-支撐外牆-validatorresolver – Pankaj