代码之家  ›  专栏  ›  技术社区  ›  senty

前缀中间件的最佳选择是什么

  •  0
  • senty  · 技术社区  · 5 年前

    我的路线设置如下:

    Route::prefix('/admin/{company}')->group(function() {
        Route::resource("employees", "Admin\EmployeesController");
        Route::resource("jobs", "Admin\JobsController");
    
        // and few other routes
    })->middleware('admin');
    

    以前,我用 {companyId} 但我现在想把它改成模型绑定。我的中间件正在检查 $companyId = $request->route('companyId');

    public function handle($request, Closure $next)
    {
        $id = $request->route('companyId');
        $adminRole = Role::where('name', 'admin')->first();
    
        if (!Auth::user()->userRoles->where('company_id', $id)->where('role_id', $adminRole->id)->count()) {
            return response("Unauthorized action", 403);
        }
    
        return $next($request);
    }
    

    因为我正在使用模型绑定进行重构 {company} 而不是 {公司id} 参数,我意识到像盖茨和政策之类的东西。我是否需要利用关卡或政策使之成为好的方式?

    但是,我可能不想让我的每一条路线或每一个资源 /admin 已经在那里定义了前缀。有没有办法根据前缀设置门或策略?

    怎样才能使代码看起来更好?

    0 回复  |  直到 5 年前