> 백엔드 개발 > PHP 튜토리얼 > laravel的entrust这个包,控制角色的访问目录,思路要点大概是怎样?

laravel的entrust这个包,控制角色的访问目录,思路要点大概是怎样?

WBOY
풀어 주다: 2016-06-06 20:10:45
원래의
1238명이 탐색했습니다.

正在用的版本是laravel5.2,用entrust这个包的时候,控制角色的访问目录,思路要点大概是怎样?
比如:
管理员的路由是这样的:

<code>Route::group(['middleware' => 'web'], function () {
    Route::auth();
    Route::group(['prefix' => 'admin','namespace' => 'Admin'], function () {
        Route::resource('dashboard', 'DashboardController');
     });
});</code>
로그인 후 복사
로그인 후 복사

管理员通过http://www.example.com/admin/dashboard/
可以访问,但不是管理员就不能访问,应该怎样做呢?

回复内容:

正在用的版本是laravel5.2,用entrust这个包的时候,控制角色的访问目录,思路要点大概是怎样?
比如:
管理员的路由是这样的:

<code>Route::group(['middleware' => 'web'], function () {
    Route::auth();
    Route::group(['prefix' => 'admin','namespace' => 'Admin'], function () {
        Route::resource('dashboard', 'DashboardController');
     });
});</code>
로그인 후 복사
로그인 후 복사

管理员通过http://www.example.com/admin/dashboard/
可以访问,但不是管理员就不能访问,应该怎样做呢?

第一步,创建admin中间件

<code>// App\Http\Middleware\AdminMiddleware.php

class AdminMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // 如果当前用户没有管理员角色,返回403
        if ( ! $request->user()->hasRole('admin')) {
            abort(403);
        }

        return $next($request);
    }
}
</code>
로그인 후 복사

第二步,注册admin中间件

<code>// App\Http\Kernel.php

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'admin' => \App\Http\Middleware\AdminMiddleware::class,
];
</code>
로그인 후 복사

第三步,在DashboardController的构造器内注册刚刚创建的admin中间件

<code>// App\Http\Controller\DashboardController.php

class DashboardController extends Controller
{
    // ...

    /**
     * constructor
     */
    public function __construct()
    {
        $this->middleware('admin');
    }


    // ...
}</code>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿