Laravel Airlock, как вернуть разные ответы для неаутентифицированных веб-и API-запросов - PullRequest
0 голосов
/ 15 марта 2020

Я занимаюсь разработкой мобильного приложения и веб-сайта с laravel + реагировать нативно.

Когда вы отправляете запрос на маршрут с промежуточным программным обеспечением "auth: airlock", если вы передадите неправильный токен Bearer, он перенаправит вас на страницу / login. Я хочу вернуть ответ («Неаутентифицировано», 403). Но в то же время я хочу продолжать перенаправлять неаутентифицированных пользователей на страницу / страницу входа для моих веб-пользователей.

Поэтому я хочу достичь:

  • Когда веб-сайт не аутентифицирован пользователи пытаются просмотреть: domain.com/settings, он будет перенаправлен на страницу domain.com/login.

  • Когда запрос приходит на domain.com/api/settings, если запросы не имеет токен на предъявителя или имеет неправильный токен на предъявителя, ответ будет json.

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Я бы сказал, что самое чистое решение для этого - отправить запрос от вашего React Native как ("application / json"). В этом случае Laravel определит, что это вызов API, и не будет перенаправлять на route("login")

. Вот выдержка из App\Http\Middleware\Authenticate:

/**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('login');
        }
    }
0 голосов
/ 15 марта 2020

Решение:

Новый маршрут в API. php:

Route::get("/unauthenticated", function(Request $request) {
    return response("Unauthenticated", 403);
})->name("unauthenticated");

Редактировать в Authenticate. php middleware:

    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            if($request->is("api/*")) {
                return route("unauthenticated");
            }
            return route('login');
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...