Return 如果用户获得授权,则增加一列 - API
Return additional column if user is authorized - API
我有一个 Laravel-base API,它处理客户端和管理端点(有两个站点,如 domain.com
和 admin.domain.com
)。
我的身份验证是基于 cookie 的,域是 <.domain.com>
。如您所见,此 cookie 对于两个域都是可接受的。
我使用 Eloquent Api 资源来转换数据层。我的 when()
路线检查在这里安全正确吗?
public function toArray($request)
{
return [
'name' => $this->name,
'created_at' => (string)$this->created_at,
'status' => $this->when($request->route()->getName() === 'api.admin.users.index', $this->status)
];
}
在我使用 $this->when(Auth::check(), ...)
之前,但由于我的身份验证 cookie 也可用于客户端站点,因此可能会获取不需要的数据。
我的路线:
Route::group(['prefix' => 'admin', 'as' => 'api.admin.', 'middleware' => 'auth:api'], function () {
Route::resource('users', ...);
});
如果用户没有被授权,他不会因为中间件而获取数据。同时,授权使用(具有未过期 cookie 的用户)在客户端站点上不会获得不需要的数据。
谢谢!
我觉得你的方法很好。路由名称是内部的东西,用户不能修改它。不过,您可以使用 \Route::is('api.admin.*')
来改进它。然后它将适用于您所有的管理 API 路由。
我有一个 Laravel-base API,它处理客户端和管理端点(有两个站点,如 domain.com
和 admin.domain.com
)。
我的身份验证是基于 cookie 的,域是 <.domain.com>
。如您所见,此 cookie 对于两个域都是可接受的。
我使用 Eloquent Api 资源来转换数据层。我的 when()
路线检查在这里安全正确吗?
public function toArray($request)
{
return [
'name' => $this->name,
'created_at' => (string)$this->created_at,
'status' => $this->when($request->route()->getName() === 'api.admin.users.index', $this->status)
];
}
在我使用 $this->when(Auth::check(), ...)
之前,但由于我的身份验证 cookie 也可用于客户端站点,因此可能会获取不需要的数据。
我的路线:
Route::group(['prefix' => 'admin', 'as' => 'api.admin.', 'middleware' => 'auth:api'], function () {
Route::resource('users', ...);
});
如果用户没有被授权,他不会因为中间件而获取数据。同时,授权使用(具有未过期 cookie 的用户)在客户端站点上不会获得不需要的数据。
谢谢!
我觉得你的方法很好。路由名称是内部的东西,用户不能修改它。不过,您可以使用 \Route::is('api.admin.*')
来改进它。然后它将适用于您所有的管理 API 路由。