4

我正在学习如何使用 ASP.net 会员资格,当用户注册时,他们只需创建用户名和密码,但是我想在我的网站上创建一个名为“个人资料”的页面,他们可以在其中填写额外的详细信息,例如名字,姓氏,出生日期等。但是我看不到我可以将它放在 asp.net 会员数据库中的哪个位置。有一个 asp.net_profile 表,但是我不确定它是如何工作的。

有人可以解释一下我该怎么做吗?

4

3 回答 3

4

您可能必须首先使用 Membership.CreateUser 创建 MembershipUser,获取新创建的用户的 id,然后将他的额外配置文件信息插入单独的表(如 ExtendedUserInfo 等),并将其与 aspnet_Users 表和外键链接。

于 2012-09-08T15:24:48.473 回答
4

您应该将内置的会员资格视为一个黑匣子——扩展股票会员模式通常是一个非常糟糕的主意。

老实说,这些配置文件非常难看——如果方便存储杂项设置,那就太好了,但我不想存储我关心在某个时候提取的数据。主要问题是它将内容存储在不透明的序列化字段中,因此很难提取数据。开销可能很糟糕,因为它会在每个请求上反序列化这些东西,所以如果你有一个广泛的配置文件,它可能会变得昂贵。在大多数情况下,每次请求都提取某人的额外个人资料信息是不值得的。

至于用法,我将从MSDN page开始。另请注意,MVC 中还有其他挑战——它没有直接连接到该堆栈,尽管仍然可以使用它。

话虽如此,您可能想在这里建立自己的某种成员资料表。您可能会使用内置的成员资格位双重预订一些数据,但这没关系。您将希望将此表设置为与成员资格有某种关系——我更喜欢使用“所有者帐户 ID”结构,而不是将其直接键入帐户,因为这会使事情更加灵活。例如,如果有必要,它允许用户拥有多个配置文件。

于 2012-09-08T15:35:49.873 回答
2

因此,由于您已经配置了成员资格和角色部分,因此您对配置文件部分执行相同操作。但在这里您可以提供如下属性:

<profile defaultProvider="AspNetSqlProfileProvider">
  <properties>
     <add name="Name" />
     <add name="Weight" type="System.Int32" />
     <add name="BirthDate" 
          type="System.DateTime" />
  </properties>
</profile>

在您的代码中,您可以调用 Profile.Name 并分配一个值,ASP.Membership 框架管理存储这些值。

有关如何使用它的更多信息,请访问http://msdn.microsoft.com/en-us/library/d8b58y5d(v=vs.100).aspx它有点旧,但显示了基础知识。

于 2012-09-08T15:36:24.357 回答