這個問題是一個結構/設計問題,因爲我在解決執行任務的最佳方式時遇到了問題。存儲DotNetOpenAuth信息和用戶信息檢索
在我的MVC應用程序,我使用DotNetOpenAuth(3.4)作爲我的登錄信息提供者,只是使用標準FormsAuthentication
餅乾等
在DB當前用戶表有:
- 用戶ID(PK,唯一標識符)
- OpenIdIdentifier(nvarchar的(255))
- OpenIdDisplay(nvarchar的(255))
- DISPLAYNAME(nvarchar的(50))
- 電子郵件(爲nvarchar(50))
- ******中國(爲nvarchar(50))
由於用戶ID是用戶的明確標識(他們應該能夠在日後改變自己的OpenID提供商),這是其他錶鏈接到(用戶)的關鍵。
這是當前的代碼,在成功的身份驗證上創建臨時用戶並重定向到創建操作。
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
FormsAuthentication.SetAuthCookie(response.ClaimedIdentifier, false);
var users = new UserRepository();
if (!users.IsOpenIdAssociated(response.ClaimedIdentifier))
{
var newUser = new DueDate.Models.User();
newUser.OpenIdIdentifer = response.ClaimedIdentifier;
newUser.OpenIdDisplay = response.FriendlyIdentifierForDisplay;
TempData["newUser"] = newUser;
return this.RedirectToAction("Create");
}
現在提出這個問題的癥結所在:
是在
response.ClaimedIdentifier
正確的資料片將被存儲對用戶?是
FormAuthentication.SetAuthCookie
形成驗證的首選方式是?或者,還有更好的方法?當我打電話給SetAuthCookie時,除了
ClaimedIdentifier
之外,沒有與用戶有關的數據。如果我一直指他們的UserId
,創建用戶是一個更好的主意,那麼將該UserId
存儲在cookie中而不是ClaimedIdentifier
?如果我在很多地方使用該UserId,我該如何從cookie中檢索它,或者將它存儲在其他更合理/有用的位置?
有點長篇大論,但我一直有麻煩試圖找出要做到這一點/
非常感謝你,一個偉大的答案,太多:
然後你就可以在這個未來的HTTP請求的額外的數據得到讚賞:) – 2010-02-04 07:18:29