Route.php 中的授权和身份验证:Laravel 5.1
Authorization along with Authentication in Route.php : Laravel 5.1
我有下面的路由检查用户是否通过身份验证,然后才让他们访问页面
<?php
Route::group([
'middleware' => 'auth',
], function() {
Route::get('/Categories-List', 'Skills\Category_Controller@index');
});
在我的 auth()->user()
中,有 RoleID
检查用户是管理员还是其他角色。我想检查 RoleID
是否为 1 然后只允许他们访问该页面。
我可以在 Laravel 5.1
中设置授权和身份验证吗
你想要做的是 运行 多个中间件 - 一个用于验证用户,另一个用于检查他的访问级别。
你想要做的是像这样在数组中定义中间件:
<?php
Route::group([
'middleware' => ['auth','isAdmin'],
], function() {
Route::get('/Categories-List', 'Skills\Category_Controller@index');
});
您可以看到我添加了一个 isAdmin
中间件来执行您需要的检查。您只需要自己创建中间件即可。
这里有很多关于路由中间件的其他信息:http://laravel.com/docs/master/middleware#assigning-middleware-to-routes
好的,所以您需要创建 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
的方法并使其满足您的需要。
我有下面的路由检查用户是否通过身份验证,然后才让他们访问页面
<?php
Route::group([
'middleware' => 'auth',
], function() {
Route::get('/Categories-List', 'Skills\Category_Controller@index');
});
在我的 auth()->user()
中,有 RoleID
检查用户是管理员还是其他角色。我想检查 RoleID
是否为 1 然后只允许他们访问该页面。
我可以在 Laravel 5.1
中设置授权和身份验证吗你想要做的是 运行 多个中间件 - 一个用于验证用户,另一个用于检查他的访问级别。
你想要做的是像这样在数组中定义中间件:
<?php
Route::group([
'middleware' => ['auth','isAdmin'],
], function() {
Route::get('/Categories-List', 'Skills\Category_Controller@index');
});
您可以看到我添加了一个 isAdmin
中间件来执行您需要的检查。您只需要自己创建中间件即可。
这里有很多关于路由中间件的其他信息:http://laravel.com/docs/master/middleware#assigning-middleware-to-routes
好的,所以您需要创建 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
的方法并使其满足您的需要。