我有一个基于Laravel的API,该API可同时处理客户端和管理端点(有两个站点,例如domain.com
和admin.domain.com
)。
我的身份验证基于Cookie,该域为<.domain.com>
。如您所见,此cookie对于两个域都是可接受的。
我将雄辩的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)不会在客户端站点上获取未经授权的数据。
谢谢!
答案 0 :(得分:1)
我认为您的方法很好。路线名称是内部名称,用户无法修改。您可以通过使用\Route::is('api.admin.*')
来改善它。然后它将适用于您的所有管理API路由。