Tag: 会话

Rails登录重置会话

当用户成功登录时调用reset_session并在用户注销时再次调用它是最佳做法吗? 这样做会有副作用/问题吗?

如何使用Rails跨多个域共享用户会话?

是否有人知道任何gem,教程或解决方案使用户能够在一个域中登录网站并自动在同一会话中访问其他合作伙伴域? 我有两个rails应用程序正在运行,我们称之为App-A和App-B。 App-A有一个与之关联的数据库,为App-A.com的注册和登录提供支持。 我现在想让App-A.com帐户的所有用户都可以访问App-B.com,而无需重新注册或手动登录App-B.com。 在此先感谢您的帮助! – 标记

Rails 3上的所有者过滤的模型对象

我需要对我的ActiveRecord模型进行一些过滤,我想通过owner_id过滤我的所有模型对象。 我需要的东西基本上是ActiveRecord的default_scope。 但我需要通过会话变量进行过滤,该变量无法从模型中访问。 我已经阅读了一些解决方案 ,但没有一个可行,基本上任何一个都说你可以在声明default_scope时使用session。 这是我对范围的声明: class MyModel session[:user_id]) } … end 简单吧? 但它没有说方法会话不存在 。 希望你能帮忙

如何让authlogic使用Rails会话而不是自己的cookie?

我希望authogic永远不会设置user_credentials cookie,只使用标准的Rails会话cookie。 我看到Session包含在Cookies之后的Authlogic::Session::Session::Base 。 如果我登录我的应用程序然后删除user_credentials cookie,我仍然保持登录状态。所以显然authlogic是在两个地方存储凭据并检查这两个地方? 或者忽略cookie但仍然设置它? 如何让它永远不会设置或引用user_credentials cookie?

在没有自定义域的情况下,子域会话在Heroku上的Rails 2.3和Rails 3中不起作用?

所以我有两个heroku应用程序: http://production-app.com (从http://production-app.heroku.com映射) http://development-app.heroku.com 在production-app.com ,我有几个子域使用Herer自定义域插件与Zerigo(不是通配符域插件): http://blog.production-app.com http://api.production-app.com 在development-app.heroku.com ,我也有这些自定义子域,但由于我没有自定义域,我只使用通配符插件 。 在我的routes.rb ,使用Subdomain-Fu ,我在本地和两个Heroku应用程序上都有子域名。 我现在面临的问题是, 如何在所有子域之间保持会话同步 ? 我已经尝试将其添加到production.rb : ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => ‘.production-app.com’) 甚至组合这个: begin config.action_controller.session[:domain] = ‘.production-app.com’ config.action_controller.session[:session_domain] = ‘.production-app.com’ rescue config.action_controller.session = {:domain => ‘.production-app.com’, :session_domain => “.production-app.com”} end …对于开发站点,这两个: ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => ‘.heroku.com’) # or ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => ‘.development-app.heroku.com’) 这些都不会保持子域之间的会话。 如果我有自定义域名并且刚刚运行Heroku子域名,我该如何才能正常工作? 谢谢!

如何将会话变量传递给RoR中的模型?

我在我的应用程序中使用了一个全局变量来传递信息。 但是我遇到了一个问题,谢谢大家在这里建议我将这些数据存储在与数据库的会话中。 我试过,但我发现我无法访问Model中的会话变量。 我用谷歌搜索并知道这是模型正常行为,RoR不会将会话变量传递给模型。 所以,我想在validation和控制器中使用该会话变量…. 如何将会话变量的值传递给模型? 要么 我的用例有什么其他方法吗? 我需要一个存储值的变量,这是所有MVC所必需的,并且应该在不同的并发用户之间独立。 感谢大家。 🙂

Ruby on rails – Authlogic:定期检查用户会话是否有效

我正在寻找一个解决方案,允许我定期检查用户会话是否已过期,如果是,则将其重定向到登录页面。 我正在使用Authlogic gem,所以我正在做的是调用一个在current_user上进行测试的函数。 我的USER_SESSION_TIMEOUT是5分钟,所以我每隔5:10分钟进行一次这个ajax调用。 {:controller => ‘user_session’, :action => ‘check_session_timed_out’}, :frequency => (USER_SESSION_TIMEOUT + 10.seconds) %> def check_session_timed_out if !current_user flash[:login_notice] = “Your session timed out due to a period of inactivity. Please sign in again.” render :update do |page| page.redirect_to “/user_sessions/new” end else render :nothing => true end end 我注意到每次调用current_user时都会更新用户对象,因此会话更新为5分钟。 打开一个选项卡时没有问题但是如果每次调用check_session_timed_out时都有2个选项卡,则current_user将更新用户,因此会话永不过期。 任何的想法? 谢谢

rails:如何在会话中保存大数组? (ActionDispatch ::cookies:: CookieOverflow)

我试图在一个远大于4 KB的会话中保存一个数组。 在这种情况下:发生:ActionDispatch :: Cookies :: CookieOverflow错误。 有没有人提示如何在会话中保存更大的数组? 将它保存到数据库不是我想要的。 谢谢,马库斯

某些rspec文件中提供的会话,而不是其他文件。 怎么会?

在尝试测试某些登录/注销function时,我想从会话中删除一些信息。 我发现我根本无法访问会话。 我一直得到错误:nil的未定义方法`session’:NilClass。 但令我惊讶的是,我发现我可以从其他rspec页面访问会话。 其他详细信息如下。 我的问题是:为什么我可以从某些文件而不是其他文件访问会话? 我怎样才能在下面的第二个例子中访问会话? 详细信息文件:spec / controllers / tenants_controller_spec.rb require ‘spec_helper’ describe TenantsController do specify { session[:tag].should == ‘abc’ } end 文件:spec / requests / test.rb require ‘spec_helper’ describe ‘Test’ do specify { session[:tag].should == ‘abc’ } end 当我通过rspec运行第一个文件时,我得到: Failure/Error: specify { session[:tag].should == ‘abc’ } expected: “abc” got: nil (using ==) […]

用设计手动设置return_to

我目前正在使用Devise来validation我的应用程序上的用户。 它在最重要的时候效果很好,但是我遇到了一个特定的操作问题: 视图: true %> saves_controller.rb: def new if user_signed_in? @save = Save.create(:user_id => current_user.id) render :update do |page| page.replace_html “save”, “Saved!” end else redirect_to new_user_session_path, :notice => “You need to sign in to do that.” end end 如您所见,因为动作是ajax,我不能使用传统的before_filter :authenticate_user! 方法。 因此,我将用户重定向到登录页面。 问题是,我想在用户登录时自动将用户重定向回上一页。 我知道我可以通过session[:”user.return_to”]来做到这一点,但我在设置它时遇到了麻烦。 我怎样才能做到这一点? 或者我这样做错了吗?