Pan*_*kaj 3 php laravel laravel-5 laravel-middleware laravel-5.1
我在Route下面检查用户是否经过身份验证,然后让他们访问该页面
<?php
Route::group([
'middleware' => 'auth',
], function() {
Route::get('/Categories-List', 'Skills\Category_Controller@index');
});
Run Code Online (Sandbox Code Playgroud)
在我看来auth()->user(),RoleID要检查用户是管理员还是其他角色.我想检查是否RoleID为1然后只让他们访问该页面.
我可以在Laravel 5.1中设置授权和身份验证
好的,你需要的是创建AdminMiddleware并添加到路线.
首先,打开User模型并在其中添加额外的方法:
public function isAdmin()
{
return $this->RoleID == 1;
}
Run Code Online (Sandbox Code Playgroud)
现在在控制台中运行:
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);
Run Code Online (Sandbox Code Playgroud)
现在打开app/Http/Kernel.php并添加到$routeMiddleware属性新条目:
'isAdmin' => \App\Http\Middleware\AdminMiddleware::class,
Run Code Online (Sandbox Code Playgroud)
最后修改你的路线
'middleware' => 'auth',
Run Code Online (Sandbox Code Playgroud)
成
'middleware' => ['auth', 'isAdmin'],
Run Code Online (Sandbox Code Playgroud)
此处的订单很重要,如果您在此处更改订单,如果未记录用户,您将收到意外的异常.
根据您的需要,您可能还希望仅使用isAdmin中间件,以防止此路由要进行其他重定向,而不是auth用户未记录时.在这种情况下,您需要合并方法,auth并isAdmin根据您的需要进行调整.