有两个表:aspnet_users和aspnet_membership。任何人都可以详细说明他们为什么不使用单个表格的原因吗?
答案 0 :(得分:12)
会员资格表包含与 MembershipProvider API接口相关的信息。 users表存储用户名和用户ID,这些用户名和用户ID是从许多提供程序引用的。
aspnetdb系统非常模块化,每个部分都可以通过各种提供商进行定制。这些表需要分开,以便可以重写,重定向等每个接口。
答案 1 :(得分:0)
ASP.NET中的一些其他提供程序(成员资格提供程序除外)也存储特定于用户的信息。例如轮廓。
有关此内容的更多信息:
一些提供的ASP.NET提供程序在用户名的上下文中存储/使用信息。 其中一个是 MembershipProvider ,它提供了一个身份验证存储和一组服务。
另一个是 ProfileProvider ,它允许针对每个用户持有特定于用户的数据。
无论您是否选择使用 MembershipProvider ,您仍然可以使用 ProfileProvider 。
由于 ProfileProvider 必须根据用户名存储数据(即由Context.User.Identity.Name
属性公开),因此将继续将用户记录添加到aspnet_Users中。
希望这澄清了分离的原因。
答案 2 :(得分:0)
老实说,对我来说也没什么意义。似乎aspnet_Membership表设置为容纳用户/应用程序级别信息,但UserID是PK。很奇怪。也许在某些情况下,您可能会在以后的版本中为每个用户设置多个应用程序。
Dave提到有一些像aspnet_Profile这样的表可以保存用户特定的信息。可能是ASP.NET 2.0人员只是试图将不同的字段分组分成更容易消化的块。
我知道这只是一堆猜想。希望有实际知识的人会参与其中。
答案 3 :(得分:0)
我从这个page找到了这个探索:
SqlMembershipProvider将用户帐户信息存储在两个相关表中:
aspnet_Users - 拥有每个用户帐户的记录,存储必需品。 UserId列唯一标识系统中的每个用户,并存储为唯一标识符(GUID)。
aspnet_Membership - 有一个UserId列,它将每条记录绑定回aspnet_Users中的特定记录。 aspnet_Membership表存储与每个用户帐户关联的核心数据:电子邮件,密码,安全问题和答案等。
答案 4 :(得分:0)
aspnet_users
包含您创建的用户(身份验证FORMS)...注意当您的身份验证设置为WINDOWS时,用户是WINDOWS用户,例如域\ firstname.lastname
aspnet_membership
包含WebPart
和用户设置等内容中使用的会员资格偏好信息
答案 5 :(得分:0)
aspnet_users表包含所有用户的信息:匿名而非匿名。 aspnet_membership表包含有关注册用户的信息(无匿名)。