【发布时间】:2010-10-28 15:56:52
【问题描述】:
警告:其中一些可能是非常错误的,所以如果我的假设不正确,请告诉我。
这是我想要完成的:
我正在使用 restful-authentication 进行登录。但是,由于我在 UI 中使用 flex/ruby_amf,因此我必须分别对来自 flex 的每个连接进行身份验证。
我决定这样做的方法是将登录屏幕重定向到嵌入式 Flash 页面,将 session-id 作为 flashvar 插入。 Flash 应用会随每个请求发送会话 ID,所有相关控制器上的前置过滤器会检查与会话 ID 标识的会话相关联的用户是否已登录。
我将用户与会话关联的方式是在会话表中添加一个“user_id”列,并执行从登录函数调用的 sql“更新会话集 user_id...”类型查询。
但是,user_id 仅在用户第二次登录时更新。稍作调查表明,在执行登录功能期间,会话表中的记录尚不存在。
所以,如果到目前为止一切都有意义,并且符合最佳实践等,那么我的问题是:
会话表中的记录是在什么时间点创建的?有没有办法在登录函数中更新会话对象并让 Rails 为我将 user_id 写入数据库?
rails 中会话的行为对我来说是一个真正的谜。如有任何帮助,我将不胜感激。
谢谢。
【问题讨论】:
-
PS:我在这里找到了关于更新会话表的讨论:nabble.com/Rails-2.3-Sessions-td22720164.html
-
好的,我一直在研究这个问题,我认为我一直在做的错误假设之一是会话对象对应于会话表中的一行。我希望我可以执行 session[:user_id] = Users.authenticate(name, pass) 然后执行 session.save 将其写入数据库。实际上(如果我错了,请纠正我!),会话对象以编码形式显示为数据列。这是另一个链接,说我所做的基本上是正确的:scottiestech.info/2009/04/02/…
标签: ruby-on-rails session restful-authentication