【发布时间】:2020-05-17 03:59:35
【问题描述】:
我想根据用户公司为我的所有路由设置一个默认路由前缀,例如
Route::group(['prefix' => '/{company}'], function() {
Route::get('/', 'CompaniesController@index')->name('company.index');
});
有什么方法可以通过中间件等设置这个值,这样我就不必对每种方法都做这样的事情,用户只能访问他们自己的公司。
public function index(Company $company)
{
if(auth()->user()->company == $company) {
return $company;
}
abort(404);
}
使用 Laravel 6.x
【问题讨论】:
-
你是如何使用 Spark 的?您使用的是用户计费还是团队计费?
-
我没有使用 spark
-
抱歉,问题看错了。那么答案,我看不出路由组有什么问题?应用前缀,添加一些中间件来检查经过身份验证的用户是否有权访问公司的请求。除非我错过了什么?
-
您似乎错过了这个问题。问题是“有什么方法可以通过中间件设置这个值”,如果我知道该怎么做,我就不会问这个问题了。
-
我真的不明白你为什么要在中间件中进行路由注册?中间件用于处理 HTTP 请求和响应;不是应用程序逻辑。使用
{company}参数注册一个动态路由组(如您的示例),然后使用中间件授权用户是否有权访问他们尝试访问的公司。
标签: laravel routes middleware policy