Laravel API с токеном на предъявителя - аутентификация промежуточного программного обеспечения: api - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь создать API с токеном на предъявителя, но не могу понять:

  1. Что означает route::middleware('auth:api')
  2. Где код route::middleware('auth:api')

Итак, в моем файле Routes\Api.php есть следующий код:

Route::get('/login', function (Request $request) 
{
    if(Auth::guard()->attempt(['email' => $request->email, 'password' => $request->password]) == FALSE)
        return response()->json(['status' => FALSE]);

    $user = Users::select('id', 'name', 'api_token', 'created_at')->where('email', $request->email)->firstOrFail();

    return response()->json(['status' => TRUE, 'user' => $user]);
});

Route::middleware('auth:api')->get('/bookings', function (Request $request)
{
    return response()->json(['its working!']);
});

Я могу успешно подключиться к маршруту /login и получитьapi_token.Теперь этот токен должен использоваться в маршруте /bookings для аутентификации.

Я прыгал middleware('auth:api'), чтобы проверить мои заголовки CURL для Authorization: Bearer zzzzzzzzz, но он не работает.

В общем, мне нужно понять, как изменить логику кода, стоящую за auth:api, или мне нужно создать новое промежуточное ПО и проверить заголовки запросов?

1 Ответ

0 голосов
/ 29 сентября 2018

Diclamer

Если вам нужен собственный код для обработки аутентификации, вы должны создать свое собственное промежуточное ПО и средство аутентификации и использовать его вместо того, который используется по умолчанию Laravel.

Ваши вопросы

Что означает route::middleware('auth:api') do

В нем говорится, что маршрут должен реализовывать промежуточное программное обеспечение "auth" и группу промежуточного программного обеспечения "api".

Где код route::middleware('auth:api')

Все промежуточное ПО в Laravel определено в app/Http/Kernel.php.

Там вы, вероятно, увидите что-то вроде

protected $middlewareGroups = [
    ....,
    'api' => [
        'throttle:60,1',
        'bindings',
    ],
];

и

protected $routeMiddleware = [
    ...,
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];

Это означает, что маршрут с использованием промежуточного программного обеспечения auth:api реализует группу промежуточного программного обеспечения API (в данном случае промежуточное программное обеспечение ThrottleRequests и SubstituteBinding) и промежуточное программное обеспечение аутентификации (Authenticate).

Фактическая защита, используемая для аутентификации, зависит от конфигурации в вашем файле конфигурации auth.php:

'guards' => [
    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],

В приведенном выше случае используется TokenGuard (laravel/framework/src/Illuminate/Auth/TokenGuard.php).

Итак, чтобы ответить на ваш вопрос, код дляЭто промежуточное ПО можно найти по адресу

laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...