0
A
回答
1
你可以使用一些緩存商店(例如的Memcached/Redis的/數據庫),以保持記錄的登錄用戶作爲userid到sessionid的鍵值對。在創建新會話的代碼塊中,檢查密鑰是否存在。如果有,過期會話ID。創建新的會話並將密鑰存儲到會話ID中。
注意我沒有實現完全相同的用例,但使用memcached做了類似的事情。使用像memcache這樣的服務來存儲這種信息比使用數據庫要快得多。
2
Sinatra中的默認會話只是底層Rack會話對象的別名。您需要直接使用Rack::Session::Cookie
而不是enable :sessions
設置像過期的選項(如Sinatra FAQ: How Do I Use Sessions?描述):
# config.ru
use Rack::Session::Cookie, :key => 'rack.session',
:domain => 'foo.com',
:path => '/',
:expire_after => 2592000, # In seconds
:secret => 'change_me'
相關問題
- 1. 我如何設置會話永遠不會在django中過期
- 2. Laravel 4 - auth.basic過濾器會話不會過期|如何過期auth.basic會話
- 3. Sinatra會話緩存
- 4. Sinatra中的默認會話過期時間是什麼?
- 5. Sinatra會話不會如預期的那樣持續
- 6. 如何處理在Django中API會話過期的會話?
- 7. 會話過期,我的cookie也會過期
- 8. 如何在Tomcat中過期我所有的會話?
- 9. Django會話過期
- 10. sfGuardUser - 會話過期
- 11. 會話未過期?
- 12. 使會話過期
- 13. Firebase會話過期
- 14. WKWebView會話過期
- 15. Struts2會話過期
- 16. 如何通知用戶會話過期
- 17. 如何解決會話過期問題
- 18. 超時過期 - 會話 - 如何修復
- 19. facebook api - 如何過期當前會話?
- 20. 如何檢測會話過期編程
- 21. 如何清除過期的codeigniter會話?
- 22. ASP.NET會話不會過期
- 23. Ruby和Sinatra會話問題
- 24. Sinatra會話自動銷燬
- 25. 跨Windows的Ruby Sinatra會話
- 26. 凡過濾會話過期
- 27. 如何檢測過期會話與沒有會話
- 28. 在會話期間Cookie是否過期?
- 29. PHP會話在使用期間過期
- 30. Sinatra會話在Internet Explorer中發佈期間丟失
謝謝隊友!我結束了一個類似的解決方案,我只是將會話ID存儲在數據庫的用戶配置文件中(它不是一個大的應用程序atm),除非當前會話的ID與存儲在數據庫中的ID相同,否則我將用戶簽出。我在登錄時存儲會話ID。 – Dmitry