Ruby on rails 会话处理和登录/注销

Ruby on rails 会话处理和登录/注销,ruby-on-rails,ruby-on-rails-3,session,authentication,Ruby On Rails,Ruby On Rails 3,Session,Authentication,我正在开发Rails应用程序,必须使用身份验证。我安装了Desive gem并试图适应它。无论如何-我有两个问题,可能是相关的(不知道) 登录时,如何注销已作为同一用户登录的用户?我的意思是-有人从机器M1登录,下一个从机器M2登录,另一个用户正在登录。我想从M1注销用户 如何在会话中存储数据信息?我将有3个表单,一些依赖于另一个,只有在最后一个表单之后,我才需要在数据库中创建条目。我想在会话中存储其他信息。怎么做,还是坏主意 1) 这将使用designe结束会话 destroy_user_se

我正在开发Rails应用程序,必须使用身份验证。我安装了Desive gem并试图适应它。无论如何-我有两个问题,可能是相关的(不知道)

  • 登录时,如何注销已作为同一用户登录的用户?我的意思是-有人从机器M1登录,下一个从机器M2登录,另一个用户正在登录。我想从M1注销用户

  • 如何在会话中存储数据信息?我将有3个表单,一些依赖于另一个,只有在最后一个表单之后,我才需要在数据库中创建条目。我想在会话中存储其他信息。怎么做,还是坏主意

  • 1) 这将使用designe结束会话

    destroy_user_session GET    /users/sign_out(.:format)                  {:action=>"destroy", :controller=>"devise/sessions"}
    
    只需添加一个指向“/users/sign_out”的链接,它就会注销该用户。我不遵循M1和M2中关于用户的部分,但是您可以使用sign\u out\u all\u范围同时注销所有用户

    2) 会话[:anything]=“value\u you\u want”将在会话中存储信息,请记住,默认情况下,会话存储设置在coockie中,因此您只有40k存储数据


    如果您想制作一个类似向导的表单,我建议您访问www.railscasts.com并搜索“wizard”,这里有一个屏幕广播,介绍如何实现您的目标。

    关于M1和M2上的用户:我想防止从两台机器登录到一个帐户。因此,当用户登录到某个帐户(其中有用户登录)时,我希望注销第一个登录的用户。您希望避免的行为也可以在具有不同浏览器的同一台机器上实现,我认为很难解决。问题是会话是由浏览器保存的cookies标识的,浏览器将保持cookies的唯一性,但不同的浏览器不会共享该列表,更不可能在计算机之间共享。如果你尝试使用Desive和gmail,你会发现你不能使用同一个浏览器/机器双重登录,但可以使用不同的浏览器/机器。有一种可能性,你可以在用户登录之前重置他们的会话,这是一个可行的解决办法。这正是我想要的!机器是我头脑中唯一的捷径:)你能告诉我如何在登录前重置用户会话吗?