Return 如果用户获得授权,则增加一列 - API

Return additional column if user is authorized - API

我有一个 Laravel-base API,它处理客户端和管理端点(有两个站点,如 domain.comadmin.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 路由。