Я прихожу очень поздно сюда, но я думал, что добавлю свои два цента.Насколько я понимаю, желание состоит в том, чтобы указать, что у пользователя нет правильной авторизации, и предложить ему войти в систему. По понятным причинам Руди хотел бы вернуть 401 неавторизованным (поскольку пользователю требуется авторизация с помощью какого-либо механизма, например, ведения журнала).в), а также перенаправить их на страницу входа в систему - но это не очень легко сделать и не поддерживается "из коробки" большинством библиотек.Одним из решений является отображение страницы входа в теле ответа 401, как было предложено в другом ответе.Однако позвольте мне взглянуть на это с точки зрения устоявшейся / лучшей практики.
Контрольный пример 1: Facebook
Переход на защищенную страницу Facebook (мой пользовательпрофиль) в то время как выход из системы приводит к ответу 404 Не найдено.Facebook обслуживает страницу общего назначения "эта страница недоступна", которая также включает в себя форму входа.Интересно.Еще более интересно: когда я перехожу на страницу «события», мне подают ответ 302, который пересылается на страницу входа (которая возвращает ответ 200).Поэтому я предполагаю, что их идея состоит в том, чтобы вернуть 302 для страниц, которые мы знаем , существуют, но служат 404 для страниц, которые могут существовать или не существовать (например, для защиты конфиденциальности пользователя).
Контрольный пример 2: Входящие Google
При переходе в папку «Входящие» при выходе из системы возвращается 302 и перенаправляется на страницу входа, аналогичную Facebook.Я не смог выяснить, как сделать свой профиль Google+ личным, поэтому там нет тестовых данных ...
Тестовый пример 3: Amazon.com
Переход кмоя история заказов, когда я вышел из системы, возвращает 302 и перенаправляет меня на страницу входа, как и раньше.У Amazon нет понятия «профильной» страницы, поэтому я тоже не могу протестировать ее здесь.
Подводя итоги тестовых примеров, представляется целесообразным вернуть 302 Found и перейти на страницу входа.если пользователь должен войти в систему (хотя я бы поспорил 303 См. Другое на самом деле более уместно).Это, конечно, только в случае, когда реальный пользователь должен ввести имя пользователя и пароль в HTML-форме.Для других типов аутентификации (например, базовая, API-ключ и т. Д.) 401 Несанкционированный, очевидно, является подходящим ответом.В этом случае нет необходимости пересылать на страницу входа.