2011-06-06 177 views
0

我正在开发Rails应用程序,我必须使用身份验证。我安装了设计宝石,并试图适应它。反正 - 我有2个问题,它可以连接(不知道)会话处理和登录/注销

  1. 登录时,如何退出的用户,在已经签署了相同的用户?我的意思是 - 从机器M1有人登录,接下来从M2机器,另一个用户正在登录。我想退出M1的用户

  2. 如何在会话中存储数据信息?我将有3个表格,一些依赖于其他,并且只有在最后一个我需要在数据库中创建条目之后。我想在会话中存储其他信息。怎么做,或者这是个坏主意?

回答

1

1)该路线结束与设计出会话

destroy_user_session GET /users/sign_out(.:format)     {:action=>"destroy", :controller=>"devise/sessions"} 

只需添加指向“/用户/ SIGN_OUT”的链接,它会注销用户。 2)session [:anything] ='value_you_want'会将信息存储在会话中,请记住,默认情况下会话存储区被设置在coockie中,所以你只有40k存储数据。

如果你想制作一个像表单一样的向导,我建议去www.railscasts.com并搜索“向导”,那里有一个截屏视频,告诉你如何实现你想要的。

+0

关于M1和M2上的用户:我想阻止从两台机器登录到一个帐户。因此,当用户登录后,某些用户登录后,我想退出登录的第一位用户。 – 2011-06-07 10:44:02

+0

您想避免的行为也可以在具有不同浏览器的同一台计算机上实现,我认为很难解决。事情是会话由浏览器保存的cookie标识,浏览器将保持cookie的独特性,但不同的浏览器不会共享该列表,在计算机之间甚至更少。如果你用devise和gmail试用它,你会看到你无法用相同的浏览器/机器进行双重登录,但你可以使用不同的浏览器/机器。您可以在登录之前重置用户的会话,这是可行的解决方法。 – radha 2011-06-07 19:18:10

+0

这正是我想要的!机器只是我脑海中的捷径:)你能告诉我如何在登录之前实现重置用户会话吗? – 2011-06-07 20:21:47