我正在使用使用不同范围的Oauth2(lucadegasperi/oauth2-server-laravel)的Laravel API,比如admin和user。 API在前端提供emberjs应用程序。显然,用户可以访问比admin更少的资源。 我的问题是,ember会向某些应该具有相同名称但将使用不同控制器的路由发出请求。
我想设置我的api,以便我可以使用同名的路由,在两个范围内使用不同的控制器,所以我可以分开一些东西。因为我希望大部分原样离开ember app结构。
问题是,当我以管理员的身份发出请求时,它会抛出一个403,表示只有用户范围可以使用该路由。
那不是我认为会发生的事情。我认为过滤器首先会检查范围并输入路径,即使另一个范围中存在相同的路径。但从它的外观来看,你必须使用不同的路由名称,这对我的Ember应用程序来说是不好的,或者你过滤从每个控制器和方法发送给每个角色的内容,并使用路由过滤器" oauthOr"所以这两个角色都可以访问控制器。
如果没有办法做我正在尝试的事情(参见代码),有没有办法阻止控制器根据用户角色/范围执行某些方法?公寓从手动" ifing和elseing"到处都是?
以下是一个示例,说明了我想要完成的任务。
Route::group(array( 'prefix' => 'api/1', 'before' => 'oauth:admin' ), function(){
Route::resource('cars', 'ApiAdminCarsController');
Route::resource('bikes', 'ApiAdminBikesController');
});
Route::group(array( 'prefix' => 'api/1', 'before' => 'oauth:user' ), function(){
Route::resource('cars', 'ApiUserCarsController');
Route::resource('bikes', 'ApiUserBikesController');
});
答案 0 :(得分:0)
在Route :: resource调用中,您可以执行某些操作,例如“only”,“except”,以限制哪些方法可以通过哪条路径执行。