Tag: cookie

显示是否有人正在阅读post

我想显示正在阅读post的人员列表。 在尝试实现该function之前,我想要一些建议。 我首先检查在PostsController调用show动作的PostsController ; 每当一个人观看post时,他都会被记录在正在阅读post的人员名单上。 但是,当他离开阅读post时,我不确定如何从列表中删除此人。 有没有办法使用cookies或sessions来通知用户是否离开某个页面? 一点帮助可以帮助我马上开始! 我很感激任何建议。 谢谢!

会话值在重定向rails 4后重置

我正在使用设计3.5.1,rails 4.0.0和ruby 2.0.0-p0。 如果用户未登录并尝试打开需要身份validation的私有页面,请使用lvh.me:3000/users/1/edit ,然后设计将针对关键user_return_to在会话中添加users/1/edit 。 问题是当用户在身份validation失败后被重定向到登录页面时,会话中的user_return_to值会重置。 我的应用程序遍布此问题。 如果我在会话中存储值并从同一操作重定向到另一个路径,则会话值将消失。 注意:我已将rails应用程序从(rails 3.0.4,ruby 1.8.7)升级到(rails 4.0.0,ruby 2.0.0)。 对不起,问题中有任何含糊之处。 如果您有任何疑问,请发表评论。 更新: 在我的应用程序控制器中,我添加了一个beforefilter来validation用户身份。 应用程序控制器中仅显示相关代码。 application_controller.rb class ApplicationController :devise_controller? # rest of the code end 我正在使用inheritanceDevise::FailureApp的自定义失败类。 代码看起来像这样。 custom_failure.rb class CustomFailure < Devise::FailureApp def redirect_url eval "new_user_session_path" end def redirect store_location! flash[:alert] = i18n_message # session[:user_return_to] returns '/foobar' here. redirect_to redirect_url end […]

如何防止Rails用户意外地认证为错误的用户?

具体来说,我编写了一个Rails应用程序,其中我使用默认(在Rails 2.3.5中) CookieStore会话存储,我发现了一个奇怪的问题。 我和其他几个人一直在使用该网站几个星期,我们每个人都有一个基于用户名和密码的登录(每个用户注册自己,我将(盐渍和散列)数据存储在数据库中)。 我将用户ID存储在Rails session对象中(因此,在浏览器和服务器之间来回传递的cookie中)。 这里有一个重点:由于这是一个内部网站点,因此我将cookie设置为保持活动长达2周,以避免用户不得不一直登录。 今天我重置数据库,有意擦除所有用户记录(以及所有其他数据)。 一些用户开始再次注册,然后一个用户发现他们第一次去网站,因为擦除他们自动以不同的用户身份登录! 我想我可以看到为什么会发生这种情况:从该用户的浏览器传递到服务器的用户ID现在与我的数据库中的不同用户记录匹配。 我最初的想法是“哦,亲爱的,我没想到!” 但我想的越多,我就意识到这可能是预期的行为。 我意识到我可以将我的Rails应用程序更改为用户ActiveRecordStore但在我这样做之前我想确保我理解这里发生了什么。 具体来说,使用CookieStore会话和让会话保持活跃一段时间的组合真的会造成这样一个巨大的安全漏洞吗? 或者我错过了什么? session_id应该在这里提供更多的安全性吗?

基于Cookie的会话的安全性

我需要澄清基于cookie的会话是如何工作的。 我正在构建一个我对用户进行身份validation的应用程序,并且在成功进行身份validation后,我会将一个GUID标记为他的用户进入会话,然后将其作为cookie保留。 现在,当用户登录时,是为了防止有人嗅探流量,窃取用户cookie的内容并在自己的端创建cookie并以该人身份登录我的网站? 另一种情况可能是,如果我可以物理访问该人登录的计算机,我还可以窃取cookie的内容并以用户身份进行模拟。

Rails cookie对象,Cookie HTTP标头和document.cookie之间的关系

当我在Javascript中访问document.cookie时,它吐出来,说: ‘user_credentials=5beea8874f2db9feb873828’ 基本上,似乎是一些编码信息。 精细。 当我查看标题时,我确实看到完全相同的字符串被设置为user_credentials ,但是还为_myapplication_session=BAh7CiIQX设置了另一个值。 与user_credentials不同,这个包含大写字母和F后面的字母。 所以: 什么是_myapplication_session ? 这与Rails中的会话对象有关吗? 为什么_myapplication_session没有出现在Javascript document.cookie ?

如何在Rails中的单独域上设置cookie

如何在通过javascript调用调用我的网站的其他域上设置cookie? 它适用于FF3,但不适用于IE6。 我的服务器是从单独的站点和域上的javascript标记调用的。 结果返回用数据填充页面的javascript(它是一个小部件)。 我正在尝试使用domain =“。mydomain.com”和path =“/”设置cookie。 它适用于Firefox,但不适用于IE。 如果我测试来自我自己的域的javascript调用,它在IE中工作正常。 有谁知道如何使用Rails在IE中使用跨域cookie设置?

为什么rails不断发回Set-Cookie标头?

我遇到的问题是弹性负载均衡器和清漆缓存有关cookie和会话在rails和客户端之间混淆了。 部分问题是,rails几乎在每个请求上都添加了一个“Set-Cookie”标头,并且会话ID。 如果客户端已经发送了session_id,并且它匹配rails将要设置的session_id ..为什么rails会不断告诉客户“哦是啊..你的会话ID是……”

更改Rails会话cookie域而不记录用户

我正在使用Rails 4.2.2(使用Devise 3.4.1)并且正在将cookie_store域从www.boundless.dev更改为.boundless.dev,以便在所有子域中共享相同的会话(单点登录) 。 Boundless::Application.config.session_store :cookie_store, key: ‘_boundless_session’, domain: ‘.boundless.dev’ 如果我单独做这个改变。 返回该站点的现有登录用户最终将获得2个_boundless_session cookie,一个使用domain _boundless_session ,另一个使用www.boundless.dev。 不知怎的,这使得登出不可能。 是否可以在不将所有用户从站点中注销的情况下进行此更改? 我以为我能够在我的ApplicationController中编写一个方法作为before_filter来删除会话cookie并将其替换为.boundless.dev中的一个新的,但它不起作用,我怀疑它有一些东西给我使用remember_user_token cookie。 def update_session_cookie_domain session_cookie = cookies[‘_boundless_session’] cookies.delete(‘_boundless_session’, domain: ‘www.boundless.dev’) cookies[‘_boundless_session’] = { value: session_cookie, domain: ‘.boundless.dev’ } end

如何在Rails上实现无cookie的Flash消息?

我正在开发一个Facebook应用程序,所以我不能依赖于P3P (隐私首选项目),这是一个该死的痛苦(参见幻灯片共享的幻灯片18和19关于Rails和Facebook应用程序的图片) … 在Facebook应用程序中,从浏览器的角度来看,每个cookie都是第三方cookie 。 许多浏览器默认阻止它们。 所以我的问题是: 如何在不依赖cookie的情况下实现Flash消息? 更新: 我相应地修改了session_store.rb和DB。 现在会话存储在数据库中但闪存消息依然依赖于cookie …请问有什么想法吗? 更新#2: 我终于找到了一个解决方法,请参阅下面的答案。 最好的办法是ajax一切 (根据上面链接的slidehare)但作为一个快速修复我的解决方案应该工作。

在我开始在线阅读之前,Sessions对我有意义

我从阅读Sessions vs Cookies中收集的主要内容是,Cookie存储在客户端,会话存储在服务器端。 如果会话存储在服务器端,那么服务器如何知道哪个客户端是他们的? 显然,必须在客户端进行某些操作。 每当我使用自动滚动用户身份validation时,我的users数据库表中都有一个session_token列。 然后,这个模块倾向于为我提供便利: module SessionsHelper def current_user User.find_by_session_token(session[:session_token]) end def current_user=(user) @current_user = user session[:session_token] = user.session_token end def logout_current_user! current_user.reset_session_token! session[:session_token] = nil end def require_current_user! redirect_to new_session_url if current_user.nil? end def require_no_current_user! redirect_to user_url(current_user) unless current_user.nil? end end 我相信存储在服务器端的会话,它们意味着每个用户都有session_token 。 此外,会话散列必须在客户端。 如果没有,它在哪里? 请注意,我正在存储用户的session_token,如下所示: session[:session_token] = user.session_token 。 最后,如果我认为会话是在客户端,那么它是如何保持安全的? 最后,这是否与在其他框架(如Django,php框架等)上处理会话的方式相同? […]