Laravel路由::管理员组

Laravel路由::管理员组,laravel,routes,admin,Laravel,Routes,Admin,我想认证一些路由,如果用户是管理员 Route::get( '/user/{data}', 'UserController@getData' ); Route::post( '/user/{data}', 'UserController@postData' ); 现在,我把它放在控制器内: public function getData( $data = 'one' ) { if ( Auth::user()->permission == 'admin' ) {

我想认证一些路由,如果用户是管理员

Route::get( '/user/{data}', 'UserController@getData' );
Route::post( '/user/{data}', 'UserController@postData' );
现在,我把它放在控制器内:

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

public function postData( Request $request, $data = 'one' )
{
    if ( Auth::user()->permission == 'admin' ) {
        //...
    } else {
        //...
    }
}
我想使用Route::group,但我如何在routes.php中做到这一点?

您可以这样做,它将检查用户是否是管理员:

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}', 'UserController@getData');
    Route::post('/user/{data}', 'UserController@postData');
});

您可以指定路由组并为其提供中间件

例如:

routes.php

Route::group(['middleware' => 'admin'], function () {
    Route::get( '/user/{data}', 'UserController@getData' );
    Route::post( '/user/{data}', 'UserController@postData' );
});
app/Http/Middleware/admin.php

<?php

namespace App\Http\Middleware;

use Closure;

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

    }
}

谢谢!在内核中注册后,它就可以工作了!是的,Laravel中预先构建的授权机制允许您通过
智能地实现这一点。。。看见