好的,你需要创建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('/');
}
}
return $next($request);
现在打开
app/Http/Kernel.php
文件,并将以下内容添加到
$routeMiddleware
属性中:
'isAdmin' => \App\Http\Middleware\AdminMiddleware::class,
最后将其修改为您的路由。
'middleware' => 'auth',
转换为
'middleware' => ['auth', 'isAdmin'],
这里的顺序很重要,如果您更改此处的顺序,则在用户未登录时会遇到意外异常。
根据您的需求,如果您希望在此路由中进行其他重定向而不是在auth
中,在这种情况下,您可能还想仅使用isAdmin
中间件。在这种情况下,您需要合并auth
和isAdmin
的方法,并将其适应您的需求。
isAdmin
保护的路由,则会被重定向到/
,稍后又会被重定向到/
- 这就是为什么会出现这种情况。您应该在AdminMiddleware
中使用新路由,例如restricted
,并创建新路由restricted
,在其中显示此页面仅限于管理员,或者您应该将其重定向到已登录用户的主URL。 - Marcin Nabiałek