Tag: cookies

使用Devise的Rails应用程序使用session_id和remember_user_token之间的区别

我正在使用Devise-1.5.4和Rails 3.0.20。 以下是我所知道的事实: session_id与浏览器有一个Cookie,可以帮助普通应用程序唯一地跟踪会话。 可能有也可能没有用户登录。 如果用户已登录(并假设他选择了remember_me),那么浏览器中还有另一个与remember_user_token相关的Cookie。 在我的应用程序中,我使用(设计提供)方法,如current_user , authenticate_user! validation用户。 以上方法调用authenticate! ,它本身调用serialize_from_cookie ,它使用remember_token来validation用户。 我对session_id的使用有点困惑。 什么时候使用,怎么样? 如果用户已登录,对于我的rails应用程序(或设计)来唯一标识用户,它是否会使用session_id? 当用户没有选择remember_me(并且没有remember_token )时会发生什么? 设计如何validationcurrent_user?

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

由于我在欧盟工作,我相信我制作的所有网站都必须遵守这个愚蠢的欧盟法规,禁止在未经用户同意的情况下使用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做到这一点?

Rails + Sinatra应用程序共享会话

我还没有找到一个好的答案。 如何才能将我的Rails应用程序和Sinatra应用程序(安装在我的Rails应用程序的config.ru中)成功共享会话? 如果我首先访问我的Sinatra应用程序,然后是Rails应用程序,我得到一个错误,如undefined method sweep for {}:Hash ,大概是因为Rails使用Hash的自定义子类来存储会话信息,而Rack :: Session :: Cookie不会“T。 我的代码到目前为止: config.ru map “/” do run MyRailsApp::Application end map “/sinatra” do use Rack::Session::Cookie, key: “_app_session”, secret: “” run MySinatraApp end 配置/初始化/ session_store.rb MyRailsApp::Application.config.session_store :cookie_store, key: ‘_app_session’ 配置/初始化/ secret_token.rb MyRailsApp::Application.config.secret_token = “” # same as config.ru 我错过了什么?

Rack Session Cookie和Sinatra – 设置和访问数据

我正在使用机架会话池,但是我的用户会被一个网络服务器线程踢到另一个网络服务器线程上,使会话数据到期。 我开始在Sinatra中启用:会话,但是我无法使用它,因为我有使用Sinatra的多个应用程序(它似乎正在使用相同的密钥 – 不确定这是因为它是否是相同的主机) 因此,由于我的应用程序会相互破坏,我现在正在尝试使用Rack Session Cookie并设置变量(与启用相同:会话,但您可以设置变量) 伟大,所以有效! 但是现在我无法以我使用它的方式访问会话数据,在Rack Session Pool和enable:sessions中 session[:user] = nick puts session[:user] 你明白了…… 问题是为什么我可以在Pool和Sinatra中使用session [:user]启用会话数据,但是不能在Rack Session Cookie中访问会话数据? 我错过了什么吗? 我正在做的就是下面 config.ru use Rack::Session::Cookie, :key => ‘key’, :domain => “localhost”, :path => ‘/’, :expire_after => 14400, # In seconds :secret => ‘secret’ 编辑: 做了一些测试并发现它实际上把它放在会话变量中,但是一旦它移动到新方法或重定向会话变量似乎被删除(这个cookie真的大于4KB?!) – 它可以’因为启用:会话工作得很好

可以在cookie中存储哈希值吗?

任何人都知道我是否可以在cookie中添加哈希值? 像这样:cookies [:test] = {:top => 5,:middle => 3,:bottom => 1} 谢谢

设计不适用于RoR3应用程序上的多个子域

我已经看到很多关于这个主题的问题,但是很多问题都有相互矛盾的信息,并且由于某些原因它对我没有用。 我有: 顶级域名:即lvh.me(开发)。 每个用户都有子域名:ie userdomain.lvh.me登录表单位于顶级域名:lvh.me 我想要: 如果用户登录,则需要在所有子域之间共享会话。 我的意思是,会话需要在lvh.me:3000/something和userdomain.lvh.me:3000中激活 如果用户从lvh.me:3000/something注销它应该工作,如果用户从userdomain.lvh.me:3000注销,它也应该工作。 我试过了 在初始化程序中设置以下内容: MyApplication :: Application.config.session_store:cookie_store,:key =>’_ mykey’,:domain =>:all 发生了什么? 我可以登录lvh.me:3000,我正确地重定向到lvh.me:3000/internalpage,如果我去subdomain.lvh.me:3000它很棒。 我也可以从lvh.me:3000/internalpage注销但是如果我尝试从subdomain.lvh.me:3000注销它不起作用。 Devise SessionsController中的destroy动作被执行,但是会话并没有消失。 根据http://excid3.com/blog/sharing-a-devise-user-session-across-subdomains-with-rails-3/ , 这里的诀窍是:域选项。 它的作用是设置TLD(顶级域)的级别,并告诉Rails域的长度。 你要注意的部分是,如果你设置:domain =>:在某些地方建议使用all,除非你使用localhost,否则它将无法工作。 :所有默认值都是TLD长度为1,这意味着如果您使用Pow(myapp.dev)进行测试,它将无法工作,因为这是一个长度为2的TLD。 所以,看完之后我也试过了 MyApplication :: Application.config.session_store:cookie_store,:key =>’_ mykey’,: domain =>’lvh.me’ 发生了什么? 我可以登录lvh.me:3000,我正确地重定向到lvh.me:3000/internalpage,如果我去subdomain.lvh.me:3000它不起作用,我没有会话。 如果我回到lvh.me:3000/internalpage我的会话已经消失了。 那里发生了什么? 还有什么? 然后,在读取rails 3.2子域并设计后,我将初始化器行更改为 MyApplication::Application.config.session_store :cookie_store, :key => ‘_mykey’, :domain => ‘.lvh.me’ 注意“。” 在域名之前。 根据SO中的post: […]

如何使用(ruby)机架中间件组件设置cookie?

我正在为一个需要有条件地设置cookie的rails应用程序编写机架中间件组件。 我目前正试图设法设置cookie。 从谷歌搜索它似乎应该工作: class RackApp def initialize(app) @app = app end def call(env) @status, @headers, @response = @app.call(env) @response.set_cookie(“foo”, {:value => “bar”, :path => “/”, :expires => Time.now+24*60*60}) [@status, @headers, @response] end end 它不会给出错误,但也不会设置cookie。 我究竟做错了什么?

Rails 4不加密cookie内容

你好我正在尝试加密和保护我的cookie中包含的数据,但似乎数据只被编码(base64) 这是一个例子: cookies.signed[:example] = { :value => ‘can you see this?’, :httponly => true, :expire_after => 30.minutes, :secure => true } 这是cookie的内容: BAhJIhZjYW4geW91IHNlZSB0aGlzPwY6BkVG–b4a8bbd7cd35e392ccd788df0008fd10b48442b2 如果我解码字符串(base64)我得到: I”can you see this?:EFom{q{vq{_M<}to8f 我想知道我错过了什么,目前这就是我所拥有的 session_store.rb: Service::Application.config.session_store :cookie_store, key: ‘_service_session’ 在我的secret_token.rb中我设置了这样的东西: Service::Application.config.secret_key_base = ‘e892d55cbc205bb6..’

如何从ApplicationController(Rails)访问cookie

我想访问cookie,然后执行相同的操作,无论操作或控制器如何。 我不想写出一个从我的无数动作方法中调用的方法,因为除了痛苦之外,它不会产生非常灵活的代码。 我宁愿在application_controller.rb中从ApplicationController类(所有控制器类的超类)调用我的cookie处理方法。 但是,在ApplicationController类的主体中调用cookies()会引发“未定义的方法”错误。 (我想cookies直到稍后才定义。) 我能做什么? 我应该覆盖ApplicationController的initialize()方法并从那里调用我的cookie处理方法吗? 如果是这样,我应该如何将参数传递给超级构造函数? PS我正在使用Rails 2.3.5

Sinatra – response.set_cookie不起作用

我需要为我的Sinatra应用程序使用cookie。 如果我使用最简单的方法是有效的: response.set_cookie(‘my_cookie’, ‘value_of_cookie’) 但我需要一些选项,如域名和过期日期,所以我试试这个: response.set_cookie(“my_cookie”, {:value => ‘value_of_cookie’, :domain => myDomain, :path => myPath, :expires => Date.new}) 不起作用。 没有cookie。 我需要这么多…… 请帮忙……谢谢!