我的路由组是否针对要求管理员角色的路由正确编写?

时间:2018-07-31 19:05:41

标签: php laravel

我正在尝试从特定路由中删除管理中间件,并仅为管理路由创建Route :: group,但是我不确定自己是否做得正确。

我正在试图解决这个问题

Route::get('/admin', [
    'uses' => 'PagesController@admin',
    'as' => 'admin',
    'middleware' => 'roles',
    'roles' => 'Admin'
]);

对此:

Route::group(['middleware' => ['roles'], 'roles' => ['admin']], function(){
    Route::get('/admin', 'pagesController@admin')->name('admin');
});

因此,此路线组仅将具有管理员角色的人员传递给路线。我相信它可以正常工作,但我真的想检查我是否正确进行了更改。

中间件:

class CheckRole
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->user() === null){
            return redirect()->route('home');
        }
        $actions = $request->route()->getAction();
        $roles = isset($actions['roles']) ? $actions['roles'] : null;
        if ($request->user()->hasAnyRole($roles) || !$roles ) {
                return $next($request);
        }
        return redirect()->route('home');
    }
}

0 个答案:

没有答案