ruby-on-rails - 在 Ruby on Rails 4(欧盟立法)中强制禁用 cookie,直到用户(重新)接受 ToS

标签 ruby-on-rails ruby cookies

由于我在欧盟,我相信我制作的所有网站都必须遵守这一愚蠢的欧盟法规,该法规禁止在未经用户知情同意(并要求用户选择加入)的情况下使用 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/

相关文章:

ruby-on-rails-3 - cookie 过期时间与 activerecord session 存储

ruby-on-rails - Destroy 操作中的 Redirect_to 始终会获取 DELETE 动词,无论 :method I declare

ruby - 如何使用第二个数组中的值对对象数组进行排序

ruby-on-rails - 为什么 Ruby on Rails 在编辑代码后会虚假地引发 0​​x104567910?

ruby - 安装 Ruby Gem 不适用于 OSX 10.10 Yosemite

javascript - 从 Google Chrome 扩展访问 cookie

javascript - 有没有办法在直播时从 YouTube API 获取通知

javascript - 访问 Rails 应用程序中的 post 方法后的复选框行为

javascript - rails 3 : Separate javascripts for each action?

c# - WebClient.UploadFileASync 的非常奇怪的行为