-1
我想將userId從存儲庫中保存到數據庫中(系統中的每個表都有id字段)。如何在ServiceStack服務類中使用會話對象(IAuthSession)?
我不知道如何獲取會話對象退出服務類?
我唯一的想法是將會話對象從服務構造函數註冊到IoC容器,並在需要時解析它。
這是一個很好的做法嗎?
我想將userId從存儲庫中保存到數據庫中(系統中的每個表都有id字段)。如何在ServiceStack服務類中使用會話對象(IAuthSession)?
我不知道如何獲取會話對象退出服務類?
我唯一的想法是將會話對象從服務構造函數註冊到IoC容器,並在需要時解析它。
這是一個很好的做法嗎?
不,您不應該在IOC中註冊用戶會話,用戶會話綁定到HTTP請求,因爲它由輸入請求上可用的Users Session Cookies標識。
解析或保存用戶會話需要訪問當前請求。請參閱會話文檔,以access the current request outside of a Service的不同方式。
使用TryGetCurrentRequest限制只能從http請求使用的存儲庫。如果有一個基於計時器的任務具有用戶帳戶「系統」,並定期更改數據庫,該怎麼辦?版本庫必須以某種方式獲得其「假」(非http)會話。 – smokeing
@smokeing根據預期,傳入的HTTP請求中的會話cookie包含會話ID,如果您不在沒有訪問會話ID的請求的上下文中,除非您將它存儲在別處。如果您在其他地方存儲了sessionId,則可以使用會話ID通過'SessionFeature.GetSessionKey(sessionId)解析會話密鑰,並使用'cache.Get(sessionKey)'從已註冊的'ICacheClient'直接訪問它。 –
mythz