无法理解Rails中的会话

时间:2010-04-29 21:17:48

标签: ruby-on-rails

请不要误解我的误解。 会议对我来说很新,我有一些问题。

好的,我读了很多关于会话的信息,尤其是rails会话。但这并不能让我想象会议。

我理解正确,用户向服务器发送请求(获取) - >服务器创建一个新会话(并将该文件存储在具有会话ID的硬盘驱动器中),会话ID - >是一个随机生成的数字?因此,服务器在此服务器向客户端发回答案并在cookie中设置session_id后,创建一个新会话(并在驱动器上存储会话)?

好的,我调试一些参数并看到一些结果:

的调试(会话):

{:_csrf_token=>"jeONIfNxFmnpDn/xt6I0icNK1m3EB3CzT9KMntNk7KU=", :session_id=>"06c5628155efaa6446582c491499af6d", "flash"=>{}}

的调试(饼干):

{"remember_user_token"=>"1::3GFRFyXb83lffzwPDPQd", "_blog_session"=>"BAh7CDoQX2NzcmZfdG9rZW4iMWplT05JZk54Rm1ucERuL3h0NkkwaWNOSzFtM0VCM0N6VDlLTW50Tms3S1U9Og9zZXNzaW9uX2lkIiUwNmM1NjI4MTU1ZWZhYTY0NDY1ODJjNDkxNDk5YWY2ZCIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7AA==--348c88b594e98f4bf6389d94383134fbe9b03095"}

好的,我知道,_csrf_token有助于防止csrf。 session_id - >是存储在硬盘驱动器上的会话的ID(默认情况下)

但是什么是cookies中的_blog_session? 另外,remeber_user_token包含我的id(1 :: *)以及第二部分,它是什么?

对不起这个愚蠢的问题,我知道我可以轻松使用任何好的auth-plugins(authlogic / clearance / devise),但我想完全理解会话。

谢谢。

(对不起我的英语,这不是我的母语)

1 个答案:

答案 0 :(得分:1)

remember_user_token可能由您的身份验证插件设置,它是加密字符串,存储在users表中,用于验证他。插件之间的细节可能有所不同。

第二部分:您可能正在使用基于cookie的会话存储(默认情况下),

因此,_blog_session存储您的加密会话数据。 有关基于Cookie的会话herehere的更多信息。

名称“_blog_session”在config / initializers / session_store.rb中设置

看起来像:

# Your secret key for verifying cookie session data integrity.
# If you change this key, all old sessions will become invalid!
# Make sure the secret is at least 30 characters and all random, 
# no regular words or you'll be exposed to dictionary attacks.
ActionController::Base.session = {
  :key         => '_blogs_session',
  :secret      => '07fb6f0d41af4ae06aebb1696fcbb5a5398d4a08570744a4cd53ff237020c43a2022b4041d617d95bcf3f5c4601c7e6c1646eecfc157cc200e7dfedd7d7c6813'
}