2016-09-18 127 views
2

我想认证一些路线,如果用户是管理员。现在Laravel路线::组管理员

Route::get('/user/{data}', '[email protected]'); 
Route::post('/user/{data}', '[email protected]'); 

,我做了控制器内部:

public function getData($data = 'one') 
{ 
    if (Auth::user()->permission == 'admin') { 
     //... 
    } else { 
     //... 
    } 
} 

public function postData(Request $request, $data = 'one') 
{ 
    if (Auth::user()->permission == 'admin') { 
     //... 
    } else { 
     //... 
    } 
} 

我想和路线::组进行,但我怎么能做到这一点的routes.php文件?

回答

0

您可以create middleware如果用户是管理员将检查:

class IsAdmin 
{ 
    public function handle($request, Closure $next) 
    { 
     if (Auth::user()->permission == 'admin') { 
      return $next($request); 
     } 

     return redirect()->route('some.route'); // If user is not an admin. 
    } 
} 

注册它Kernel.php

protected $routeMiddleware = [ 
    .... 
    'is.admin' => \App\Http\Middleware\IsAdmin::class, 
]; 

然后将它应用到一个路由组:

Route::group(['middleware' => 'is.admin'], function() { 
    Route::get('/user/{data}', '[email protected]'); 
    Route::post('/user/{data}', '[email protected]'); 
}); 
+1

谢谢!有用! – Okay

0

你可以指定一个路由组并给它一个中间件

https://laravel.com/docs/5.3/routing#route-groups

https://laravel.com/docs/5.3/middleware

https://laravel.com/docs/5.3/middleware#assigning-middleware-to-routes

实施例:

routes.php文件

Route::group(['middleware' => 'admin'], function() { 
    Route::get('/user/{data}', '[email protected]'); 
    Route::post('/user/{data}', 'UserCon[email protected]'); 
}); 

应用程序/ HTTP /中间件/ admin.php的

<?php 

namespace App\Http\Middleware; 

use Closure; 

class Admin 
{ 
    public function handle($request, Closure $next) 
    { 
     if (Auth::user()->permission !== 'admin') { 
      // 
     } else { 
      // 
     } 

    } 
} 
+0

谢谢!在内核注册后,它的工作原理! – Okay