这个问题是一个结构/设计问题,因为我在解决执行任务的最佳方式时遇到了问题。存储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