登录后重定向至受保护分类

我一直在搜索,找到了一些相关话题,但大多涉及 SSO,而我们尚未配置 SSO。

我们使用的是 Discourse 标准认证,同时也通过 OAuth2 插件进行认证。

我们有几个类别要求用户必须属于特定的用户组。

如果我们为未登录用户创建一个指向受保护类别的链接(该用户已加入正确的用户组),他们会看到正常的 404/Oops 页面。他们必须先点击退出,登录,然后重新浏览回到该受保护类别。

是否有办法在链接到 /login 页面时提供重定向 URL 指向该隐藏类别,或者更改某个设置,使访问受保护类别时自动提示登录?

提前感谢…

难点在于,任何其他处理方式都会暴露该私密分类的存在。

传统的建议是修改 404 页面的提示文案,告知用户可能需要登录后才能查看该内容。

明白了——谢谢!

这种情况已经出现得足够多了,也许我们应该考虑在 404 页面添加一个可选的站点设置,以放宽安全限制,@eviltrout……这样,当匿名用户点击

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

时,他们会看到

抱歉,您需要登录后才能查看该主题

而不是

哎呀!该页面不存在或是私有的。

(这是否可以扩展为向已登录用户显示需要访问哪个群组?)

Robin,你怎么看?

我认为这是一个很棒的想法。对于许多类型的论坛来说,明确告知用户存在某些内容并不是安全漏洞,反而能显著提升无障碍访问体验。

真正的挑战在于如何恰当地命名该站点设置,并清晰地解释其功能。以下是我的初步方案,欢迎提出修改建议。

以下是简要规格说明:

  • 新增一个站点设置 detailed_404,默认值为 false。说明:“向用户提供更多详情,解释为何无法访问特定主题。注意:此设置安全性较低,因为用户将能够判断某个 URL 是否包含有效主题。”

  • 启用后,在主题控制器中,如果权限检查失败,则返回一个包含失败原因的 JSON 对象。

  • 在前端应用程序中使用这些详情显示相应的错误消息:

    • 如果是匿名用户:“抱歉,您需要登录后才能查看该主题。”

    • 如果已登录:

      • 如果该主题仅限制给一个群组(不包括工作人员群组):“该主题仅限 GROUP_NAME 访问。”并包含 申请访问权限 按钮。

      • 如果该主题限制给多个群组,则显示通用消息:“您无权访问此主题。请联系为您提供链接的人以申请访问权限。”

@dan 在完成加密插件的工作后,你能把那个添加到你的列表中吗?

我觉得 detailed_404 可能会更好,也更简洁?

好的,我已经更新了帖子。

我们是否希望针对受限类别中的主题列表和受限类别中的单个主题都执行此操作,还是仅针对受限类别中的单个主题执行?

因为目前这两者的行为是不同的。

我没看到很多人抱怨无法查看主题列表,而不是主题本身。除非真的很容易,否则我不会去麻烦。

看到这个昨天已经合并了。谢谢大家!

特此说明,该拉取请求为: