2010-04-29 18 views
0

請不要因爲我的誤解而咬我。 會議對我來說是非常新的,我也遇到了一些問題。無法理解Rails中的會話

好吧,我讀了很多有關會議,特別是鐵路會議的信息。但這並不能讓我想象會議。

我理解是否正確,當用戶發送請求到服務器(獲取) - >服務器創建一個新的會話(和存儲這個文件在硬盤驅動器與會話ID),會話ID - >是一個隨機生成的數量?所以,服務器在客戶端發回應答並在cookie中設置session_id後,創建一個新的會話(並在驅動器上存儲會話)?

好吧,我調試一些PARAMS和看到一些成果:

調試(會話):

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

調試(餅乾):

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

好吧,我知道,什麼_csrf_token有助於防止csrf。 session_id - >是存儲在硬盤上的會話的ID(默認情況下)

但cookie中的_blog_session是什麼? 也,remeber_user_token包含我的id(1 :: *)和第二部分是什麼,它是什麼?

對不起,這個愚蠢的問題,我知道我可以很容易地使用任何不錯的認證插件(authlogic/clearance/devise),但我想完全理解會議。

謝謝。

(也對不起我的英語水平,這不是我的母語)

回答

1

remember_user_token可能是由您的認證插件設置,它是加密的字符串,存儲在用戶表,用來對他進行認證。細節可能因插件而異。

第二部分:您可能正在使用基於Cookie的會話存儲(這是默認值),

所以,_blog_session存儲您的加密會話數據。 更多關於基於cookie的會話herehere

名稱 「_blog_session」 在配置設置/初始化/ 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' 
} 
+0

感謝您對本鏈接。 – vorobey 2010-04-30 07:12:04