首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制禁用Rails 4中的cookie(欧盟立法),直到用户(重新)接受ToS

强制禁用Rails 4中的cookie(欧盟立法),直到用户(重新)接受ToS
EN

Stack Overflow用户
提问于 2014-10-31 07:41:20
回答 2查看 485关注 0票数 2

由于我在欧盟工作,我相信所有我制作的网站都必须遵守欧盟这项愚蠢的规定,即未经用户知情同意禁止使用cookie (并要求用户选择)。

我的意图是“完全过火”,要求用户在没有从用户发送的"_#{app_name}_session“cookie时(重新)接受服务条款,并且(重新)只在用户单击”接受“后才在”ToS“中创建它。

基本上,每当有人访问该应用程序时,用户将被迫显式接受ToS或登录才能使用该应用程序/网站。

我如何在Rails 4中实现这一点?

在PHP中,我只需要添加

代码语言:javascript
复制
if (session_status() != PHP_SESSION_ACTIVE){
  header("Location: /terms-of-service");
}

index.php的开头

然后,我需要确保唯一的session_start()位于为/terms-of-service页面服务的文件中,并且项目中没有其他实例。

但是如何使用Rails来实现这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-31 07:53:05

您可以通过在您的before_filter中创建ApplicationController来做到这一点。

代码语言:javascript
复制
class ApplicationController < ActionController::Base
  before_filter :validate_toc!

  private

  def validate_toc!
    # check if guest user has not already accepted the toc from session
    redirect_to toc_path, alert: 'Please accept ToC to continue.' if sesion[:tos].nil? || !user_logged_in?
  end
end

注意:sesion[:tos]是用户接受ToS时设置值的地方。toc_path应该在routes.rb中设置,例如:

代码语言:javascript
复制
get '/path/to/toc' => 'pages#toc', :as => :toc
票数 0
EN

Stack Overflow用户

发布于 2014-10-31 08:36:59

我检查了@ answer 089247的答案,并根据我的需要对其进行了修改。

代码语言:javascript
复制
before_action :session_check!, except: [:terms_of_service_path]

private

  def session_check!
    redirect_to terms_of_service_path if !session.exists?
  end

基本上,如果浏览器会话没有打开会话,用户将被迫接受ToS。然后,ToS页面将创建会话,除非用户拒绝接受ToS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26669639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档