由于我在欧盟,我相信我制作的所有网站都必须遵守这一愚蠢的欧盟法规,该法规禁止在未经用户知情同意(并要求用户选择加入)的情况下使用 cookie。
我的意图是“完全矫枉过正”并要求用户在没有从用户发送的“_#{app_name}_session”cookie 时(重新)接受服务条款,并且仅在用户之后(重新)创建它单击所述 ToS 中的 [接受]。
基本上,无论何时有人访问应用程序,用户都将被迫明确接受 ToS 或登录才能使用应用程序/网站。
如何在 Rails 4 中实现这一点?
在 PHP 中我只需要添加
if (session_status() != PHP_SESSION_ACTIVE){
header("Location: /terms-of-service");
}
以index.php
开头
然后我需要确保唯一的 session_start()
位于为 /terms-of-service
页面提供服务的文件中,并且没有其他实例项目中的任何其他地方。
但是如何使用 Rails 做到这一点呢?
最佳答案
我检查了@User089247 的答案并根据我的需要对其进行了修改
before_action :session_check!, except: [:terms_of_service_path]
private
def session_check!
redirect_to terms_of_service_path if !session.exists?
end
基本上,如果没有为浏览器 session 打开的 session ,用户将被迫接受 ToS。然后 ToS 页面将创建 session ,除非用户拒绝接受 ToS。
关于ruby-on-rails - 在 Ruby on Rails 4(欧盟立法)中强制禁用 cookie,直到用户(重新)接受 ToS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26669639/