Rack-Policy 使用教程
项目介绍
Rack-Policy 是一个专为 Ruby 社区打造的 Rack 中间件,旨在帮助您的应用程序轻松遵循“欧盟 ePrivacy 指令”。通过 Rack-Policy,您可以实现对用户设备上数据存储的合法同意管理,从而在不牺牲用户体验的前提下,达到法规的合规性要求。
项目快速启动
安装
首先,将以下行添加到您的应用程序的 Gemfile 中:
gem 'rack-policy'
然后执行:
$ bundle
或者自己安装为:
$ gem install rack-policy
使用
在默认情况下,当 Rack 应用程序加载时,不会设置任何 cookies(除非已经存在会话 cookies),并且任何现有的会话 cookies 将被销毁。在整个请求周期中,cookies 不会被设置,直到用户明确同意。这可以通过设置 consent_token
来控制。
以下是一个简单的 Rails 应用示例:
# config/application.rb
require 'rack/policy'
class Application < Rails::Application
config.middleware.insert_before Rack::Lock, Rack::Policy::CookieLimiter, consent_token: 'rack_policy'
end
应用案例和最佳实践
Rails 应用
在 Rails 应用中,您可以在用户访问特定页面时弹出提示,引导用户进行选择,进而决定是否启用 cookies。以下是一个示例:
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
def set_cookie_consent
response.set_cookie 'rack_policy', 'allow_me'
end
def unset_cookie_consent
response.delete_cookie 'rack_policy'
end
end
Sinatra 应用
对于经典的 Sinatra 应用程序,可以这样做:
# /usr/bin/env ruby -rubygems
require 'sinatra'
require 'rack/policy'
configure do
use Rack::Policy::CookieLimiter, consent_token: 'rack_policy'
end
get '/' do
"Allow cookies to be set <a href='/allow'>Allow</a>"
end
get '/allow' do
response.set_cookie 'rack_policy', 'allow_me'
"Cookies allowed"
end
get '/deny' do
response.delete_cookie 'rack_policy'
"Cookies denied"
end
典型生态项目
Rack-Policy 可以与多种 Ruby Web 框架无缝集成,包括但不限于:
- Rails
- Sinatra
- Padrino
- 纯 Rack 应用
这些框架的支持使得 Rack-Policy 具有强大的兼容性和广泛的应用范围,能够满足不同业务场景的需求。
通过以上教程,您可以快速上手并集成 Rack-Policy 到您的 Ruby Web 应用中,确保您的应用符合欧盟 ePrivacy 指令的要求。