Laravel 11: Как контролировать поведение RedirectIfAuthenticated?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel 11: Как контролировать поведение RedirectIfAuthenticated?

Сообщение Anonymous »

Это Laravel 11 + Fortify + Sanctum. Я использую Laravel для своего бэкэнда API. Внешний интерфейс – это стороннее SPA.
Я только что тестировал конечную точку входа (POST) с помощью Thunder Client (XHR). Когда вызов входа в систему завершается успешно один раз, любые последующие вызовы конечной точки входа вызывают перенаправление на корневой URL-адрес вместо возврата ответа JSON, сообщающего, что пользователь уже аутентифицирован. Это означает, что вызывающая сторона получит окончательный ответ 405 (метод не разрешен), поскольку на корневом URL-адресе нет конечной точки POST.
Раньше мы могли контролировать это ошибочное поведение с помощью изменение промежуточного программного обеспечения RedirectIfAuthenticated и перенаправление только в том случае, если это не XHR. В Laravel 11 это промежуточное программное обеспечение было перенесено в сам фреймворк. Я также слышал, что они устранили саму проблему, поэтому больше нет необходимости редактировать промежуточное программное обеспечение, но я все еще вижу ошибку.
Я также попробовал новый вспомогательный метод Laravel 11 для переопределения такого поведения перенаправления (в bootstrap/app.php):

Код: Выделить всё

$middleware->redirectUsersTo(function() {
if(request()->wantsJson()) {
return response()->json(['result' => 'success'], 200);
} else {
return '/home';
}
});
Но это приводит к другим, не связанным с этим проблемам. Я что-то упустил?
Обновить
Я обнаружил, что добавление следующего кода в дескриптор промежуточного программного обеспечения RedirectIfAuthenticated исправляет ошибки. проблема:

Код: Выделить всё

if ($request->expectsJson())
return response()->json(['message' => 'authenticated.'], 200);
Эта проблема и ее решение, по-видимому, хорошо известны уже много лет. Однако тот факт, что это промежуточное программное обеспечение теперь является частью платформы Laravel 11 и находится в каталоге поставщика, означает, что мне придется добавить эту строку вручную в развертывание, а также позаботиться о том, чтобы она не перезаписывалась во время обновлений. Не понимаю, почему Laravel не добавил эту простую проверку в последние несколько основных версий.

Подробнее здесь: https://stackoverflow.com/questions/782 ... d-behavior
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»