2012-04-18 80 views
2

我對Padrino(我來自PHP背景)和ruby web框架都非常陌生,一直試圖弄清楚如何實現簡單的用戶身份驗證和會話管理系統,但還沒有真正找到關於這個問題的很多文檔。我知道padrino帶有一個預先構建的「Admin」包,其中包括用戶登錄/認證等,但我寧願從頭開始自己製作,而不是試圖根據自己的需要定製解決方案。Padrino中的會話和用戶身份驗證

所以我的問題是,在Padrino中,我將如何實現一個簡單的基於會話的身份驗證系統,通過設置會話數據來登錄用戶,一旦用戶/通過組合已針對數據庫進行驗證,檢查用戶是否在請求保護某些頁面/資源時使用登錄,使用會話數據獲取用戶的ID /角色/等,然後在用戶註銷時銷燬該會話。作爲一名PHP程序員,我習慣於使用超全球化的$_SESSION來達到這個目的,在padrino/ruby​​中有沒有類似這樣的東西?我注意到app.rb中有一個enable :sessions,與pardrino等效的是:sessions

回答

12

是啊,

session[:cart] = cart_id 
Cart.find(session[:cart].to_i) if session[:cart].present? 

認證的目的就可以避免padrino管理員和內置的身份驗證使用更更簡單的方法:

# in app.rb 
use Rack::Auth::Basic, 'Restricted Area' do |username, password| 
    user == 'admin' and password == 'pwd' 
end 

如果您需要控制多一點你的會話/您可以使用的餅乾:

set :sessions, 
    :key   => '__awesome_key', 
    :secret  => 'awesome_password', 
    :expire_after => 1.year 
+0

好極了,好像應該足以滿足我的需求。另一個快速問題(我希望);會話過期如何管理/修改? – 2012-04-18 14:35:08

+0

我更新了我的答案。 – DAddYE 2012-04-19 13:02:33

+0

我似乎無法找到一種方法來訪問從定製的輔助類中的類方法'會話'哈希有沒有什麼辦法可以做到這一點? – 2012-04-23 20:02:01