【问题标题】:How to Extend Membership in Asp.net?如何在 Asp.net 中扩展会员资格?
【发布时间】:2009-08-02 06:25:32
【问题描述】:

我想知道如何在 asp.net 中扩展会员资格?

当用户登录时,我想检查用户名和密码。当然标准的 asp.net 成员会这样做(这是 ValidateUser())。

我还想检查另一个名为“机构”的字段。如果用户在此框中键入内容,我想验证“机构”、“用户名”和“密码”是否与数据库中的内容匹配。

如果用户将“机构”留空,那么我只想使用 asp.net 中提供的默认 ValidateUser() 方法并仅检查“用户名”和“密码”。

那么我可以重载 ValdiateUser() 方法吗?还是我必须自己写一个来处理这个新案例?

我会将这个“机构”字段存储在数据库中的什么位置?我听说有人推荐“个人资料”表,但我不确定。

另外,我如何更改会员资格以将它们视为 3 个不同的用户

机构:ABC 用户名:A09410515 密码:1234567

机构:GHA 用户名:A09410515 密码:1234567

用户名:A09410515 密码:1234567

所以我的数据库应该关注这些应该是 3 个唯一用户。当然,如果我的数据库中已经存储了相同的信息。

例如。

机构:ABC 用户名:A09410515 密码:1234567

如果有人尝试使用完全相同的“用户名”和“机构”信息进行注册,那么它会返回一个关于重复名称的错误。

【问题讨论】:

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


    【解决方案1】:

    是的,您可以create a custom membership provider。您的提供者将实现MembershipProvider,让您完全控制在会员系统和扩展数据库模式之间创建接口。 Writing A Custom Membership Provider for your ASP.NET 2.0 Web Site 是一个详细的例子。

    【讨论】:

    • 您好感谢您的链接。不过我还是有点困惑。我在哪里存储我要添加的这些额外字段。就像我将其添加到个人资料中还是什么?就像我正在制作一个自定义提供程序,以便我可以将我的 asp.net 数据库和我的数据库合并在一起,但我使用的是 mssql 服务器。我还注意到他们覆盖了这些方法。我仍然想使用默认的验证方法。我也做了2个重载方法。一种是我的自定义验证,另一种是调用默认验证方法?
    【解决方案2】:

    这样做的懒惰方法是将机构和用户名组合在一起以创建实际用户名。

    因此,您将拥有 3 个不同的用户名:ABC&A09410515、GHA&A09410515 和 &A09410515。只是不允许用户在用户名中使用 &。

    然后,在创建用户或登录之前,您只需将两个字符串组合在一起。

    我想不出任何无法通过简单 hack 解决的重大问题(例如,显示用户名(使用 username.split('&')[1] ),但是JP 的帖子绝对是“正确”的做法。

    詹姆斯

    【讨论】:

      【解决方案3】:

      您可以使用应用程序名称作为机构,这样您将在不同的应用程序中使用相同的用户名

      罗德里戈。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-03
        • 2011-07-28
        • 2010-11-13
        • 2013-05-17
        • 2010-10-27
        • 2012-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多