【问题标题】:Adding data to a Devise session将数据添加到设计会话
【发布时间】:2014-07-04 15:18:46
【问题描述】:
【问题讨论】:
标签:
ruby-on-rails-4
devise
warden
【解决方案1】:
我通过将其添加到我的 config/initializers/devise.rb 文件中解决了这个问题。不确定这是否安全或正确的方法,但它确实有效。
Warden::Manager.after_authentication do |user,auth,opts|
auth.raw_session['warden.user.user.email'] = user.email
auth.raw_session['warden.user.user.username'] = user.username
end
【解决方案2】:
通常您会为此使用 Warden 序列化程序,正如我在 Warden guide 中提到的那样:
config.middleware.use Warden::Manager do |manager|
manager.default_strategies :password
manager.serialize_into_session do |user|
user.id
end
manager.serialize_from_session do |id|
User.find(id)
end
end
那么当你想获取用户的信息时:
env['warden'].user.email
env['warden'].user.username
这也使您能够获得更多信息,或者根据需要对对象采取行动。