首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails会话存储--如何*不*在会话存储中存储某些字段?

Rails会话存储--如何*不*在会话存储中存储某些字段?
EN

Stack Overflow用户
提问于 2009-08-19 15:09:10
回答 2查看 1.5K关注 0票数 1
  • 警告:完成对RoR和Ruby的警告!*

我有一个登录方法,如下所示:

代码语言:javascript
复制
@user = Person.find(:first, :conditions => ["email=?", params[:email]])
if @user and @user.password==params[:user_password]
   session[:user] = @user
else
   flash[:warn] = 'Invalid password!'

但是,用户记录可能会变得非常大,因此我不希望将整个用户记录存储在我的cookie会话中。

如何修改此代码,使特定字段不会存储在会话中?有两个字段可以获得非常大的数据(非常大的用户配置文件数据),并且不适合cookie会话4千字节的限制,因此我希望将这些字段排除在会话中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-19 15:11:23

我会这样做:

代码语言:javascript
复制
session[:user] = @user.id

然后创建一个像这样的before_filter:

代码语言:javascript
复制
before_filter :get_user

def get_user
  @user = User.find_by_id(session[:user])
end

编辑:这不是您想要的,但是如果您不能将所有的对象存储在会话变量中,您可能需要考虑这个选项。它只是一个请求,所以不会太耗费资源。此外,您还可以在用户存在的每一个页面加载时检查它,这可能对安全性很有帮助。

票数 2
EN

Stack Overflow用户

发布于 2009-08-19 15:18:46

Rails的设计常常帮助您朝着一个非常特定的方向前进。在这种情况下,默认情况下Rails的会话存储在cookie中,这是一个强烈的提示,表明您不应该在会话中存储大型对象。无论如何,都要存储用户ID,而不是User对象本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1300572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档