【发布时间】:2013-01-22 04:38:42
【问题描述】:
我正在使用 ASP.NET MVC 4 和带有 Code First 迁移的实体框架制作应用程序。
在名为InitializeSimpleMembership 的类中,有以下代码行:
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile",
"UserId", "UserName", autoCreateTables: true);
其中"UserName" 指的是包含用户用户名的列。这些用户名必须是唯一的吗?我仅在此应用程序中通过 Facebook 使用 OAuth 身份验证。因此,在 UserName 字段中,我存储了用户的 Facebook 名称(例如“George Smith”)。显然,可能有很多 George Smiths 使用我的应用程序,这会导致任何冲突吗?
我注意到WebSecurity类的很多方法,比如WebSecurity.GetUserId,都带有如下参数:string userName。如果用户名 不是 唯一的,那么我不确定这将如何工作。此外,OAuth 的默认 FacebookClient 会返回一个 ExtraData 字典,其中包含例如ExtraData["username"] = george.smith@gmail.com。似乎他们想将电子邮件存储在 UserName 下(以便 UserNames 是唯一的)。
我对 SimpleMembership 的了解不是很透彻。有人可以为我澄清一下存储在 UserName 下的值是否应该是唯一的,以便一切顺利运行?
谢谢。
【问题讨论】:
-
这很有用,谢谢。他(或者更确切地说是 Matthew Osborn)提到“所有 SimpleMembership 要求是您的用户表上有两列,以便我们可以连接到它——一个“ID”列和一个“用户名”列。”太棒了,我明白这一点,但仍然没有关于“用户名”列是否需要唯一的信息。
-
所有功能都应该是唯一的才能正常工作,据我所知,每个人都设计
schema,其中username列将是unique。可能是这里的专家会更技术地回答你。 -
我想我会让用户名列唯一,以避免将来可能出现的并发症。但是,我找到了SQL Table definition for SimpleMembership in .NET 4.5,并且[UserName] 没有标记为唯一。
标签: asp.net-mvc asp.net-mvc-4 asp.net-membership simplemembership