我在這裏很困惑。好的,我試圖創建一個會話對象,我們可以使用它來存儲一些信息。會話和內存中的對象
我的計劃是當用戶登錄到Facebook(在他們重定向回我們的網站後)時創建一個新的FacebookSession對象。我可以通過使用Facebook SDK在Facebook登錄後創建的自動生成的cookie來爲此設置狀態。所以我希望可以抓取該cookie,當他們回到服務器端並創建我的Facebook會話對象並設置包含該用戶的Facebook帳戶所需信息的Cookie信息(用戶ID,令牌等)的狀態。
我不太瞭解會話狀態,也涉及到一個頁面的線程。那麼,我無法檢查每個頁面上的現有會話對象,或者當您逐頁訪問時,它是否會丟失?比方說,當用戶回來時,我創建了這個初始的FacebookSession對象,然後立即將它們重定向到另一頁Response.Redirect。我失去了那個東西嗎?我覺得很對?因爲新的頁面請求會在IIS中爲該用戶生成一個新線程?然後,從內存中創建的任何對象的角度來看,清理板塊的過程已經被清除。
因此,然後我需要堅持它在數據庫中,然後使用諸如GetCurrentSession的方法,以某種方式查找當前用戶,並嘗試抓取表中的當前會話信息可以稱爲FacebookSession,在那裏我可以存儲他們的FacebookUserID,代幣等
對不對?
最後,在任何時候,我將如何知道如何檢查數據庫中的該用戶?我需要某種獨特的ID?所以我所做的就是添加一個Pk列,它實際上將利用現有會話ID,我們網站上的每個用戶都擁有......這是他們訪問我們網站時獲得的全局全局訪問會話。
因此,如果通過他們的「全局會話ID」在我的表中查找它,我可以唯一地標識他們的facebook會話。但最終我遇到的問題現在是爲了從我的FacebookSession.cs對象中調用GetCurrentSession(),我需要以某種方式傳遞它的全局ID。我可以通過構造函數來做到這一點(我不是把它做成單例)。但是現在,該對象和其他幾個對象都依賴於查找用戶的Facebook會話所需的全局ID。那麼如果我們想要重用這個我在其他一些不想使用全局會話作爲PK的項目中創建的庫/包裝器,那麼我有點擰了。
所以這是我現在頭痛。如果我在這裏走正確的道路,並且如果我對內存,IIS,線程和會話狀態正確的方式來攻擊這個問題,那麼我只是想要一些意見和驗證。
我是否正確理解你想用你自己的實現替換默認的'HttpSession'對象,你調用'FacebookSession',或者你想知道如何在你自己的FacebookSession類中使用普通的Session對象? – Abel 2010-08-23 21:53:45
我假設您使用Facebook Connect?如果這樣的話,當你執行FB.Init(或者你已經有的任何認證方案)時,Facebook Connect已經授予你對認證cookie的權限。你不需要在會話中再次存儲它,這是在狀態翻倍。我所做的是設置稱爲「CurrentFacebookUserId」的服務器端靜態屬性,它只讀取HttpContext.Request.Cookies(每次請求時都會)。在這種情況下,根本不需要服務器端會話。 – RPM1984 2010-08-23 23:38:22
利用我自己的自定義FacebookSession類。 – PositiveGuy 2010-08-24 16:55:14