2012-07-10 48 views
0

所以我試圖重用Membership.GetUser().ProviderUserKey來獲取當前登錄用戶的用戶ID,而不必在每次調用時重新獲取密碼。在MVC中重新使用ProviderUserKey而無需DB提取

到目前爲止,我讀過的所有內容都表示使用配置文件值,但是如果使用SQLProfileProvider將配置文件存儲在SQL服務器上,那麼與數據庫往返相比,是否提供了任何優勢?

有沒有辦法在MVC中聲明一次獲取對象(對於每個HTTP Post,我意識到這不能重複使用多次回發)。

  • 會話使用
  • 譜使用
  • 會員使用SQL提供

的應用程序在一個Web場運行,所以我需要利用一個SQL提供一個SQL提供SQL服務器,但希望在每臺機器上緩存每個請求,而不是在每次需要時執行100次往返獲取用戶ID。

回答

3

User.Identity.Name是你在找什麼。如果您使用的是Forms Authentication,則這僅僅來自認證客戶端隨每個請求自動發送的認證Cookie。爲您提供當前認證的用戶名。沒有成員(a.k.a DB)訪問權限。

如果要存儲有關用戶的其他信息,可以使用表單身份驗證票證的user data部分和自定義的「授權」屬性來檢索來自Cookie的每個請求的自定義IPrincipal

+0

我很害怕User.Identity.Name將無法正常工作,我正在尋找獲取主鍵(ProviderUserKey)而不是用戶名,以便我可以插入其他表中存在用戶表的FK。 – 2012-07-10 21:26:55

+0

然後,您必須將其作爲表單身份驗證Cookie的「用戶數據」部分的一部分進行存儲,以避免在每個請求中敲擊數據庫,因爲我已在我的答案中對此進行了解釋。有沒有不清楚我的答案是否值得讚賞?有沒有你不明白的東西?如果是這種情況,我很樂意詳細說明。我只是認爲這對每個人都是顯而易見的。顯然我錯了,有些人不明白。 – 2012-07-10 21:28:23

+0

我實際上指的是downvoted的人。如果他留下評論,解釋他在這個失敗背後的動機本來是很好的。 – 2012-07-10 21:34:53

相關問題