Tag: 会话

Rails:跟踪用户的ID

在我的Rails应用程序中,我有一个登录页面。 在该人登录后,我的应用程序继续跟踪已登录的人的最佳方式是什么。例如,如果用户移动到不同的页面,我的控制器/操作将失去对该用户的跟踪,除非我继续通过用户随后访问的每个页面之间的变量。 有更好的方法吗? 我应该使用sessions变量吗?

如何在rails 2.3.3中有条件地分配ActionController :: Base.session

我有一个rails应用程序,在config / initializers / session_store.rb文件中包含以下内容: ActionController::Base.session = { :key => ‘_app_session’, :secret => ‘a really long string here’, :expire_after => 2.minutes } ActionController::Base.session_store = :active_record_store 因此,在正常操作期间,我们看到在数据库中为每个会话创建的ActiveRecord对象。 问题是我们并不总是希望为请求创建会话 – 我们希望能够关闭自动请求的会话创建。 我们在数据库中看到数千个会话记录,每个自动请求一个。 在rails 2.3.3之前,可能存在以下情况: class ApplicationController < ActionController::Base session :off … end 但现在在rails 2.3.3中“session:off”已被弃用,因为会话现在是延迟加载的 – 如果你不使用它们,它们就不会被创建。 问题似乎是会话对象始终在sessionstore.rb文件中分配,因此始终创建。 如果我从配置文件中删除会话分配块,则在自动请求后不会显示会话记录。 我的问题是,如何将配置分配移出session_store.rb并进入ApplicationController类(或其他地方),只有在请求不是自动化的情况下才能有条件地分配会话? 我担心在执行控制器处理程序之前可能需要会话配置数据。 我在哪里可以分配会话密钥值? 在此先感谢您的帮助。

选择足够的Rails会话存储

我目前正在使用基于memcached的会话存储( https://github.com/mperham/dalli )。 memcached服务器有时不可用(“没有服务器可用”),然后我的用户再也无法使用该应用程序了。 目前,我怀疑基于memcached的会话是否是正确的决定。 由于我只在会话中存储了很少的密钥,因此我正在考虑切换回cookie存储区。 或者我应该考虑使用ActiveRecord商店? 任何建议? 谢谢!

知道Rails中新会话何时开始

我将从描述一个场景开始,我对其他方式持开放态度,但我想不出任何其他方式。 我在Rails 2应用程序上有匿名用户。 当一个新用户访问该网站时,我想放置一个cookie,说“我已经访问过该网站一次”并将其记录在我们的系统中。 用户离开并在一个月后回来我读了这个cookie,增加了访问次数(“我来过这里2次”)并将其记录在我们的系统中。 我的计划: 新会话开始时 如果用户是新用户 – 创建cookie,请记录访问 如果用户正在返回 – 读取cookie,增加值,写入cookie,登录访问 我现在被困住的地方是“当一个新的会话开始时”步骤。 如果您有.net背景,我正在寻找的是ASP.NET中的Session_Start。 我可以在每个请求上查询数据库,并检查是否已经记录了特定的会话ID,但这似乎效率低下。

如何从Rails集成测试中访问会话?

考虑以下集成测试: test “if there is no user in session, redirect to index and flash message” do open_session do |sess| post ‘/login’, :email => users(:client).email, :password => ‘rumpelstiltskin’ sess[:user] = nil get ‘/user_page’ assert_redirected_to index_path assert_equal “Your session has expired. Please log in again”, flash[:notice] end end 这会产生错误: undefined method ‘[]=’ 并且,更改为sess.session[:user] = nil也会生成错误: NoMethodError: undefined […]

会话和cookies.permanent 之间的区别

session[:food]=”pizza”和cookies.permanent[:food]=pizza之间的区别? 我试着阅读rails文档,它说: Rails 2引入了一个新的默认会话存储CookieStore。 CookieStore将会话哈希直接保存在客户端的cookie中。 然后我不明白,如果会话[:food]保存在cookie中,所以cookies.permanent [:food]有,那有什么区别?

如何在Rails中跟踪在线用户?

这对我来说总是一个问题,因为rails没有像java框架那样的会话跟踪机制,你用什么方法来跟踪你当前在你网站上登录的人? 我使用一种简单的方法,每当用户点击网站上的某个位置时,使用当前时间设置last_visited字段,然后检查已经过去10分钟更新过该字段的用户。 除了这个之外还有哪些其他方法?

Rails 3:在活动记录中存储会话(不是cookie)

我拖了谷歌大学大约一个小时左右,但没有一个关于这个主题的好文档:-(希望有人可以提供帮助。我愿意买一本书,只要有人可以告诉我哪一本。 我使用以下版本: rails 3.2.6, ruby 1.9.3p194(2012-04-20修订版35410)[x86_64-darwin11.4.0] 要开始在Active Record中使用会话存储而不是cookie,我做了以下操作: 更新config/initializers/session_store.rb 。 评论第一行并取消注释最后一行,所以我有: # Be sure to restart your server when you modify this file. # Myapp::Application.config.session_store :cookie_store, key: ‘_elegato_session’ # Use the database for sessions instead of the cookie-based default, # which shouldn’t be used to store highly confidential information # (create the session table with […]

用于清除Rails中基于cookie的会话存储的命令

我经常想清除Rails中的会话存储,特别是默认的基于cookie的会话存储。 有些网站似乎暗示了这一点 rake tmp:sessions:clear 完成这项任务,但似乎没有。 清除基于cookie的会话存储的正确方法是什么?

从Rails中的任何位置访问“会话密钥”cookie名称

我们正在构建一个用于在iframe Facebook应用程序中使用的Rails插件,并且我们需要检查是否已经设置了Rail的会话ID cookie。 默认情况下,此cookie名为_myprojectname_session ,我们需要找出的是cookie本身的实际名称。 因此,如果没有设置,我们可以进行一些重定向以确保设置cookie。 我们如何从任何地方访问该死的名称? 或者至少从控制器内部?