Я искал информацию и нашел несколько связанных тем, но в основном они касаются SSO, который у нас не настроен.
У нас используется стандартная аутентификация Discourse, а также аутентификация через плагин OAuth2.
У нас есть несколько категорий, доступ к которым имеют только пользователи из определенных групп.
Если мы создадим ссылку для неавторизованного пользователя на защищенную категорию (при условии, что он состоит в нужной группе), он увидит стандартную страницу 404/«Ой». Затем ему придется выйти, войти в систему и снова найти путь к этой защищенной категории.
Существует ли возможность либо добавить ссылку на страницу /login с указанием URL-адреса перенаправления на скрытую категорию, либо изменить настройку, чтобы при доступе к такой категории запрашивался вход?
Проблема в том, что любое другое действие раскроет существование секретной категории.
Традиционная рекомендация здесь — отредактировать текст на странице 404, чтобы указать, что пользователю может потребоваться войти в систему, чтобы увидеть содержимое.
Это уже возникало достаточно часто, возможно, стоит рассмотреть возможность добавления опциональной настройки сайта, которая ослабляет безопасность на странице 404, @eviltrout… Так что, когда анонимный пользователь кликает на
Я считаю, что это отличная идея. Для многих типов форумов информирование о том, что что-то существует, не является уязвимостью безопасности и действительно улучшит доступность.
Сложность здесь заключается в правильном названии настройки сайта и объяснении её назначения. Я постарался сделать это ниже, но не возражаю против правок.
Вот мини-спецификация:
Добавить новую настройку сайта detailed_404 со значением по умолчанию false. «Предоставляет пользователям больше информации о том, почему они не могут получить доступ к конкретной теме. ПРИМЕЧАНИЕ: Это менее безопасно, так как пользователи будут знать, существует ли тема по указанному URL-адресу или нет».
При включении этой настройки в контроллере тем, если проверка Guardian не пройдена, вернуть JSON-объект с деталями о причине неудачи.
В фронтенд-приложении использовать эти данные для отображения соответствующего сообщения об ошибке:
Для анонимных пользователей: «Извините, для просмотра этой темы вам необходимо войти в систему».
Для авторизованных пользователей:
Если тема ограничена одной группой (за исключением групп сотрудников): «Доступ к этой теме ограничен для группы GROUP_NAME.» и добавить кнопку Запросить доступ.
Если тема ограничена несколькими группами, отобразить общее сообщение: «У вас нет доступа к этой теме. Пожалуйста, обратитесь к тому, кто предоставил вам ссылку, чтобы запросить доступ».
Я не вижу, чтобы многие жаловались на то, что не могут видеть списки тем, по сравнению с самими темами. Я бы не стал беспокоиться об этом, если только это не очень просто.