Как сделать в Laravel авторизацию/аутентификацию для API по токену?

Laravel 5.3

Надо сделать API для приложения, в котором обычная авторизация реализована штатными средствами Laravel, всё стандартно:
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],
'users' => [
            'driver' => 'database',
            'table' => 'users',
 ],


Я создал для API контроллер, с методом который получает логин и пароль, авторизует пользователя и возвращает приложению remeber_token.

После чего, этот remeber_token будет передаваться мобильным приложением с каждым запросом к методам внутри конструкции:
Route::group(['middleware' => ['auth:api']], function() {
// роуты
});

и всё будет хорошо, подумал я...

Но не сработало. На запросы к закрытым роутам я получаю редирект на форму авторизации (хотя такое поведение должно быть только при работе через браузер, но не для api роутов).

Что сделано не так? Как работают guards? Как фреймворк должен узнать в каком поле передан токен и с каким полем в бд его надо сравнить? Это реализовано из коробки так же как обычная авторизация/аутентификация?
  • Вопрос задан
  • 3686 просмотров
Пригласить эксперта
Ответы на вопрос 3
UmbrellaCoders
@UmbrellaCoders
PHP, JS Developer
Немного не в тему, но может стоит посмотреть laravel/passport?
Ответ написан
Alex_Wells
@Alex_Wells
PHP/Kotlin
И зачем JWT? Headers:
1. jwt: "Authorization: Bearer lotsOfSymbolsHere"
2. cookies: "Set-Cookie: laravel_session=123; token=456"
А теперь обьясни, зачем ты паришься с абсолютно useless технологией? Которая, к тому же, потребует столько манипуляций, при этом даже хуже кукисов?

Почитай в интернете почему НЕ стоит использовать JWT. Да, у тебя, возможно, уже все написано для jwt, но хоть на будущее будет)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы