Rails 隐藏现场会议可能吗?

发布于 2024-11-07 10:25:21 字数 81 浏览 0 评论 0 原文

是否可以通过隐藏的表单字段传递会话? (即POST)

如果是的话,是否可以在每个控制器的标准方法和现场会话之间进行操作而不丢失信息?

Is it possible to pass a session via a hidden form field? (ie POST)

if so if it possible to between the standard method and field sessions on a per controller bases without losing information?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

诗笺 2024-11-14 10:25:21

如果禁用 cookie,CGI:Session 将自动切换到使用隐藏字段,但是,我不确定 Rails 中如何支持这种行为。此外,更改此行为以要求使用隐藏字段可能需要修改 CGI:Session。

如果客户端禁用了 cookie,则会话 ID 必须作为客户端发送到服务器的所有请求的参数包含在内。 CGI::Session 类与 CGI 类结合将透明地将会话 id 作为隐藏输入字段添加到使用 CGI#form() HTML 生成方法生成的所有表单中。不提供对其他机制的内置支持,例如 URL 重写。调用者负责从 session_id 属性中提取会话 id,并手动将其编码到 URL 中,并将其作为隐藏输入添加到其他机制创建的 HTML 表单中。此外,会话过期不会自动处理。

因此,应该可以使用此方法,但据我所知,Rails 中不支持将其作为简单选项。

需要明确的是,即使 ActiveRecord 会话存储也使用 cookie,因此不要将会话存储与客户端处理会话数据的方式等同起来。

最后,曾经有插件支持这种行为,但这些插件很旧,似乎不支持 Rails 3。请参阅 会话和会话Ruby on Rails 中的 Cookie

If cookies are disabled, CGI:Sessions will automatically switch to using hidden fields, however, I'm not certain exactly how this behavior is supported in Rails. Moreover, changing this behavior to require the use of hidden fields may require modifying CGI:Session.

If the client has cookies disabled, the session id must be included as a parameter of all requests sent by the client to the server. The CGI::Session class in conjunction with the CGI class will transparently add the session id as a hidden input field to all forms generated using the CGI#form() HTML generation method. No built-in support is provided for other mechanisms, such as URL re-writing. The caller is responsible for extracting the session id from the session_id attribute and manually encoding it in URLs and adding it as a hidden input to HTML forms created by other mechanisms. Also, session expiry is not automatically handled.

Therefore, it should be possible to use this method, but as far as I know, it's not supported as a simple option in Rails.

To be clear, even ActiveRecord Session Store uses cookies, so don't equate session stores with how session data is handled by the client.

Finally, at one time there were plugins to support this behavior, but these plugins are old, don't appear to support Rails 3. See the "Non-cookie session" section of Sessions & Cookies in Ruby on Rails

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文