Php 自定义身份验证中间件-Laravel 5
Laravel 5附带的已交付的Php 自定义身份验证中间件-Laravel 5,php,authentication,laravel,middleware,Php,Authentication,Laravel,Middleware,Laravel 5附带的已交付的auth中间件非常适合用户专用的路由和控制器,但是我想添加一个功能,即还可以检查用户是否是管理员 目前,在我的控制器中,我为每个类都提供了以下功能: if (Auth::user()->level <= 1) { // admin can do these actions } else { // redirect } if(Auth::user()->levelLaravel 5.0中的中间件不支持参数(这将在即将发布的5.1版本中添
auth
中间件非常适合用户专用的路由和控制器,但是我想添加一个功能,即还可以检查用户是否是管理员
目前,在我的控制器中,我为每个类都提供了以下功能:
if (Auth::user()->level <= 1) {
// admin can do these actions
} else {
// redirect
}
if(Auth::user()->levelLaravel 5.0中的中间件不支持参数(这将在即将发布的5.1版本中添加)
您可以选择为此创建单独的中间件,或者使用路由过滤器
您可以通过将其放入RouteServiceProvider
的boot
方法来创建路由筛选器:
$router->filter('userLevel', function($route, $request, $level)
{
$user = auth()->user();
if ( ! $user || $user->level > $level)
{
return response('Unauthorized', 401);
}
});
然后在路线中使用该过滤器:
Route::group(['before' => 'userLevel:1'], function($router)
{
// define routes...
});
Laravel5.0中的中间件不支持参数(这将在即将发布的5.1版本中添加)
您可以选择为此创建单独的中间件,或者使用路由过滤器
您可以通过将其放入RouteServiceProvider
的boot
方法来创建路由筛选器:
$router->filter('userLevel', function($route, $request, $level)
{
$user = auth()->user();
if ( ! $user || $user->level > $level)
{
return response('Unauthorized', 401);
}
});
然后在路线中使用该过滤器:
Route::group(['before' => 'userLevel:1'], function($router)
{
// define routes...
});
很高兴知道这将添加到5.1中-同时,我可以创建什么样的路由筛选器?啊,我刚刚看到你的更新,谢谢。很高兴知道这将添加到5.1中-同时,我可以创建什么样的路由筛选器?啊,我刚刚看到你的更新,谢谢。