1

这是一段非常标准的代码(Rails 4):

<%= link_to 'Log out', logout_path, :method => :delete %>

但是,这里有一个非标准的考虑:没有 Javascript。如果没有 Javascript,jquery_ujs 就没有钩子,所以链接创建了一个GET /logout没有路由的 plain 。

为什么?因为我想支持该站点的 Tor 隐藏站点版本,并且我必须假设 Tor 用户(很可能通过 Tor Browser Bundle 来)将禁用 JavaScript。(我故意不想为他们启用 JS,以防止各种潜在的隐私泄露。我也不想允许 XSRF 攻击,例如允许某人使用 GET 注销我的用户,也不想让 UI 变得丑陋按钮。)

隐藏站点的功能比主站点低(例如,不接受通过 tor 付款),但登录/注销等一些基本功能确实应该可以正常工作。

支持这一点的最佳方式是什么?

4

1 回答 1

0

也许您可以form使用表单助手创建一个。这将允许您指定method要使用的。Rails 将在其中生成一个隐藏字段form,指定 HTTP 方法,然后在提交时 Rails 使用该字段来确定要调用哪个控制器操作。

剩下要做的就是编写一些 CSS 以使提交按钮看起来像一个链接,但您可以在网络上轻松找到它。

于 2013-07-24T01:42:18.567 回答