如果用户被授权,则返回附加列-API

时间:2018-07-24 18:56:57

标签: laravel-5.6

我有一个基于Laravel的API,该API可同时处理客户端和管理端点(有两个站点,例如domain.comadmin.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)不会在客户端站点上获取未经授权的数据。
谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您的方法很好。路线名称是内部名称,用户无法修改。您可以通过使用\Route::is('api.admin.*')来改善它。然后它将适用于您的所有管理API路由。