【问题标题】:Asp.net: How do i add extra user details on Membership database?Asp.net:如何在会员数据库中添加额外的用户详细信息?
【发布时间】:2013-09-04 11:18:37
【问题描述】:

我是 asp.net 上的会员资料的新手。如果我需要创建一个带有额外参数的新用户,例如名字。我应该为这些额外参数创建一个新表吗?

如果我不使用 CreateUserWizard 创建用户,我是否只使用 Membership.CreateUser 来创建用户?

请帮忙

【问题讨论】:

    标签: c# asp.net membership createuserwizard


    【解决方案1】:

    在获取其他用户信息(例如名字)后,您可以将此信息保存到自定义数据库表中。

    一个有效的点可能是将信息存储在配置文件中。但是当通过向导运行时,用户尚未经过身份验证,因此您无法将信息存储到配置文件中,因为这仅适用于经过身份验证的用户。因此,您要么必须将其存储在自定义数据库表中,要么提供一种方法让用户在注册过程后编辑配置文件。

    dbo.aspnet_Profileaspnetdb 数据库中的表,默认用于存储用户的配置文件。因此,如果您更喜欢存储在 Profile 中,则在创建用户后,加载新创建用户的配置文件并设置您收集的自定义信息。

    ProfileCommon p = Profile.GetProfile(strUsername);
    //update the field and save
    p.FirstName= txtFirstName.Text;
    p.Save();
    

    问题 2::

    If I am not using CreateUserWizard to create user, do I just use
    Membership.CreateUser to create the user??
    

    是的,不需要使用CreateUserWizard 来创建用户。甚至您也可以只收集一些基本信息,例如:用户名、密码,仅使用 2 个文本框,并使用 MemberShip.CreateUser() 方法的各种重载版本创建用户。 Check MSDN。此外,这个Link 创建的用户具有非常基本的信息。

    【讨论】:

      【解决方案2】:

      您可以使用 ASP.NET 配置文件属性来存储用户的额外信息。您可以通过这篇 MSDN 文章了解更多信息。

      【讨论】:

        【解决方案3】:

        有一个名为 UserProfile 的表存储用户名和用户 ID。这由 Membership.CreateUser 函数使用。

        如果您添加到此表中,列必须可以为空,否则在您尝试创建新用户时会抛出错误。

        另一种方法是使用单独的表来存储更多详细信息。确保主键是 INT 类型并且不是自动递增的。这样可以确保ID与UserProfile表的用户ID相同,避免了两个表之间的一对多关系。

        【讨论】:

        • 感谢澄清。我正在查看数据库,它没有 UserProfile 表,但它有一个 Users 和 Profile 表。用户表包含用户名。 Profile 表获得了 PropertyNames ...这些表是否已连接(包括其他表)。
        • 我想(尽管我对你有不同的看法——我使用的是带有 EF5 Code First 的 Razor)表将通过相同的 PK 或 FK 关系连接。能否创建一个测试用户,打开两个表来检查连接?
        猜你喜欢
        • 2015-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多