您好,我希望重新构建应用程序,并修改一个文件以禁用匿名用户的搜索功能。(不仅仅是通过 CSS)
有人能提供关于 from: 和 to: 部分的钩子语法的文档吗?
replace
filename:“/var/www/discourse/app/controllers/search_controller.rb”
from:
to:
在 search_controller.rb 中,我只想将第 12 行的
def show
替换为
def show
if current_user.present?
并将第 76 行的
format.json { render_json_dump(serializer) }
替换为
format.json { render_json_dump(serializer) }
end
Falco
(Falco)
2
有一个隐藏的站点设置可以实现这一点:
rate_limit_search_anon_global_per_minute
1 个赞
Michael12
(Michael Phillips)
3
感谢您指出这一点。为了澄清一下,隐藏的网站设置的名称是什么?它是否完全禁止匿名用户搜索,还是仅仅隐藏结果?我正在寻找一种在控制器级别阻止访问的方法,所以想知道该设置是否足够,还是还需要一些自定义代码。
感谢您提供变量,有了这份文档,我得以使其正常工作。
所以我修改了 app.yml 文件,内容如下,保存后运行 ./launcher restart app(无需重建):
env:
DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0
现在 /search 页面无法访问了 = 太棒了
现在前端搜索按钮立即返回:您执行此操作的次数过多 = 太棒了
您可以使用以下方法隐藏搜索按钮:
.anon #search-button {
display: none !important;
}
但问题是:这彻底吗?任何人都可以创建一个简单的会话 cookie 来假装他们已连接,以便他们可以通过搜索访问网站内容吗?
更彻底但不完整的解决方案:
文件是:/var/www/discourse/app/controllers/search_controller.rb
修改:在 “def show” 之后添加 “if current_user.present?”,并在条件底部添加一个 “end”。
但是,我无法在重启后使其保持不变,因此欢迎任何人告诉我如何使用 app.yml 的 after_code replace: feature 钩子使其在重启后保持不变。
我指的是未登录用户,他们会创建一个会话 cookie 来假装已登录,但也许我在这里想得有点多了,因为我猜 currentUser 函数会检查会话密钥。
Falco
(Falco)
7

那将是一个安全问题。如果你能做到这一点,请向 HackerOne 报告

1 个赞
“那将是一个安全问题。如果你能做到,请务必向 HackerOne 报告。”
不,我是 Discourse 新手,甚至连正确引用都做不到 :),我只是问一下,也许有 Discourse 工程师在这里 :);总之,多亏了你 Falco,我们解决了这个帖子的问题。
1 个赞
DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0
但请随时在控制器级别尝试此操作:
/var/www/discourse/app/controllers/search_controller.rb
修改:在“def show”后添加“if current_user.present?”并在条件底部添加“end”。
system
(system)
关闭
10
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.