【问题标题】:Associating extra information with ASP.NET MVC Membership将额外信息与 ASP.NET MVC 成员资格相关联
【发布时间】:2009-07-29 08:32:21
【问题描述】:

我不确定是否应该对 MVC 执行此操作,但我很好奇在使用 Membership 提供程序时向 ASP.NET 用户帐户添加额外信息的推荐方法是什么?以及如何将此用途与其他实体相关联。

通常我不关心配置文件,而是更喜欢将额外信息添加到仅引用 USERID 的表中。这对于 ASP.NET MVC 方法来说是好/坏/可以接受吗,或者有什么替代方法?

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-membership


    【解决方案1】:

    这是一个很好的问题,也是我一直在努力解决的问题。我认为有三种基本方法;

    1. 使用配置文件提供程序 - 这使得添加属性变得容易,但生成用户表等操作很麻烦,尤其是在您需要应用过滤器/搜索时。 API 只是没有削减它。

    2. 添加一个新表(或扩展现有表),然后加入它。然后,您需要编写自己的方法来取回自定义数据。

    3. 编写您自己的成员资格提供程序以扩展 MembershipProvider 类。

    对于我的上一个项目,我使用了后一种方法 - 我编写了一个非常快速的 SQL 提供程序,它只实现了创建用户、身份验证和更改密码所需的基本要素。对于其余的虚拟方法,我只是扔了一个NotImplementedException

    然后我添加了一个新类,该类添加了我需要的额外属性并使其可以通过传入标准MembershipUser 来实例化。像这样的:

    public static CustomMember GetMember(MembershipUser user)
    {
        // Get your custom member
    }
    

    这样,您可以在大多数情况下使用标准 MembershipUser,但如果您需要获取有关当前用户的更多详细信息,您可以执行以下操作:

    MembershipUser user = Membership.GetUser();
    CustomMember member = CustomMember.GetMember(user);
    

    不过,我很想看看其他人的方法是什么。

    【讨论】:

    • 感谢您的回复。我喜欢你的方法。我也很想知道其他人的想法。
    • 我不确定你是如何“混合和匹配”会员提供者的,当然 CustomMember.GetMember() 会从一些自定义表中提取数据,而 Membership.GetUser() 会按照默认值行事asp_users 表?
    • 嘿,谢谢你的建议。但是有没有关于选择这种方法的文章或最佳实践?我会很感激这样的链接。
    • 现在我想看看使用 ASP .NET 简单成员,我们解决了提供者模型的许多问题 - weblogs.asp.net/jgalloway/archive/2012/08/29/…
    【解决方案2】:

    您使用 MVC 的事实不应对您处理成员资格和“用户数据”的方式产生任何重大影响。

    我通常也避免使用 ASP.NET 配置文件,实际上是默认的 ASP.NET 成员身份,更喜欢滚动我自己的成员资格提供程序和“配置文件”架构,链接到我现有的用户表。

    如果您对有关客户会员提供商的更多信息感兴趣,请发表评论。

    【讨论】:

      【解决方案3】:

      我希望看到更多关于这个主题以及人们所做的事情的反馈。我目前在一个 asp.net mvc 应用程序中使用标准的 asp.net 成员资格/角色提供程序系统,但不太喜欢它。

      我的方法是更改​​ aspnet_users 表并添加一大堆额外的列; CompanyId、StreetAddress 等

      我在标准配置文件中存储了用户如何使用网站的配置文件设置;他们使用什么主题,分页列表显示多少条记录等等。

      正如大多数人发现的那样,将信息输入和输出配置文件是一件很痛苦的事情,而且我在大型系统中阅读的内容可能会由于序列化而成为性能瓶颈。

      我倾向于滚动更符合我的应用程序架构的表,实现自定义 sql 提供程序,然后考虑在 asp.net mvc 中编写一些额外的安全属性(如果需要)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多