这是一个非常标准的代码(Rails 4):
<%= link_to 'Log out', logout_path, :method => :delete %>
但是,这是一个非标准的考虑因素:没有Javascript。没有Javascript,jquery_ujs没有得到它的钩子,所以链接创建了一个没有路由的普通GET /logout
。
为什么呢?因为我想支持该站点的Tor隐藏站点版本,并且我必须假设Tor用户(最有可能通过Tor浏览器捆绑包)将禁用JavaScript。 (我故意不想为他们启用JS,以防止各种潜在的隐私泄露。我也不想允许XSRF攻击,例如允许某人用GET注销我的用户,也不会让用户界面丑陋按钮)。
隐藏网站的功能低于主网站(例如,没有通过tor接受的付款),但登录/注销等基本内容确实应该正常工作。
支持此功能的最佳方式是什么?
答案 0 :(得分:0)
也许您可以使用表单助手创建form
。这将允许您指定要使用的method
。 Rails将在form
内生成一个隐藏字段,用于指定HTTP方法,然后Rails会使用该方法确定要调用的控制器操作。
唯一要做的就是编写一些CSS来使提交按钮看起来像一个链接,但你可以在网上轻松找到它。