Перенаправление в защищенную категорию после входа

Я искал информацию и нашел несколько связанных тем, но в основном они касаются SSO, который у нас не настроен.

У нас используется стандартная аутентификация Discourse, а также аутентификация через плагин OAuth2.
У нас есть несколько категорий, доступ к которым имеют только пользователи из определенных групп.

Если мы создадим ссылку для неавторизованного пользователя на защищенную категорию (при условии, что он состоит в нужной группе), он увидит стандартную страницу 404/«Ой». Затем ему придется выйти, войти в систему и снова найти путь к этой защищенной категории.

Существует ли возможность либо добавить ссылку на страницу /login с указанием URL-адреса перенаправления на скрытую категорию, либо изменить настройку, чтобы при доступе к такой категории запрашивался вход?

Заранее спасибо…

Проблема в том, что любое другое действие раскроет существование секретной категории.

Традиционная рекомендация здесь — отредактировать текст на странице 404, чтобы указать, что пользователю может потребоваться войти в систему, чтобы увидеть содержимое.

Понял — спасибо!

Это уже возникало достаточно часто, возможно, стоит рассмотреть возможность добавления опциональной настройки сайта, которая ослабляет безопасность на странице 404, @eviltrout… Так что, когда анонимный пользователь кликает на

http://discourse.example/com/t/topic-in-secret-category

он видит

Извините, вам нужно войти в систему, чтобы увидеть эту тему

вместо

Ой! Страница не существует или является приватной.

(Это можно расширить, чтобы указывать, к какой группе нужно получить доступ, для авторизованных пользователей?)

Что ты думаешь, Робин?

Я считаю, что это отличная идея. Для многих типов форумов информирование о том, что что-то существует, не является уязвимостью безопасности и действительно улучшит доступность.

Сложность здесь заключается в правильном названии настройки сайта и объяснении её назначения. Я постарался сделать это ниже, но не возражаю против правок.

Вот мини-спецификация:

  • Добавить новую настройку сайта detailed_404 со значением по умолчанию false. «Предоставляет пользователям больше информации о том, почему они не могут получить доступ к конкретной теме. ПРИМЕЧАНИЕ: Это менее безопасно, так как пользователи будут знать, существует ли тема по указанному URL-адресу или нет».

  • При включении этой настройки в контроллере тем, если проверка Guardian не пройдена, вернуть JSON-объект с деталями о причине неудачи.

  • В фронтенд-приложении использовать эти данные для отображения соответствующего сообщения об ошибке:

    • Для анонимных пользователей: «Извините, для просмотра этой темы вам необходимо войти в систему».

    • Для авторизованных пользователей:

      • Если тема ограничена одной группой (за исключением групп сотрудников): «Доступ к этой теме ограничен для группы GROUP_NAME.» и добавить кнопку Запросить доступ.

      • Если тема ограничена несколькими группами, отобразить общее сообщение: «У вас нет доступа к этой теме. Пожалуйста, обратитесь к тому, кто предоставил вам ссылку, чтобы запросить доступ».

@dan, не могли бы вы добавить это в свой список после завершения работы над плагином шифрования?

Думаю, detailed_404 было бы, возможно, лучше и лаконичнее?

Конечно, я обновил пост.

Хотим ли мы применить это к обоим спискам тем в ограниченной категории и к теме в ограниченной категории, или только к теме в ограниченной категории?

Потому что сейчас у них разное поведение.

Я не вижу, чтобы многие жаловались на то, что не могут видеть списки тем, по сравнению с самими темами. Я бы не стал беспокоиться об этом, если только это не очень просто.

Вижу, что это было слито вчера. Спасибо всем!

Для справки, pull request был следующим: