Action Dispatch Session
CacheStore
一個用 ActiveSupport::Cache::Store
來儲存 session 的 session store。這個 store 最有用處的情況是你不會在你的 session 儲存重要的資料,且你不需要它們存續一段長時間。
選項
-
cache
- 要使用的快取。如果沒有指定,將使用Rails.cache
。 -
expire_after
- session 會儲存多久的時間後會自動過期。預設會使用該快取的:expires_in
選項。
方法
- D
- F
- N
- W
類別公用方法
new(app, options = {}) 連結
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/middleware/session/cache_store.rb, line 23 def initialize(app, options = {}) @cache = options[:cache] || Rails.cache options[:expire_after] ||= @cache.options[:expires_in] super end
實例公用方法
delete_session(env, sid, options) 連結
從快取中移除一個 session。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/middleware/session/cache_store.rb, line 49 def delete_session(env, sid, options) @cache.delete(cache_key(sid.private_id)) @cache.delete(cache_key(sid.public_id)) generate_sid end
find_session(env, sid) 連結
從快取中取得一個 session。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/middleware/session/cache_store.rb, line 30 def find_session(env, sid) unless sid && (session = get_session_with_fallback(sid)) sid, session = generate_sid, {} end [sid, session] end
write_session(env, sid, session, options) 連結
在快取中設定一個 session。
程式碼:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/middleware/session/cache_store.rb, line 38 def write_session(env, sid, session, options) key = cache_key(sid.private_id) if session @cache.write(key, session, expires_in: options[:expire_after]) else @cache.delete(key) end sid end