我在Route下面检查用户是否经过身份验证,然后让他们访问该页面
'auth', ], function() { Route::get('/Categories-List', 'Skills\Category_Controller@index'); });
在我看来auth()->user()
,RoleID
要检查用户是管理员还是其他角色.我想检查是否RoleID
为1然后只让他们访问该页面.
我可以在Laravel 5.1中设置授权和身份验证
好的,你需要的是创建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
根据您的需要进行调整.