【问题标题】:ASP.Net Membership additional fieldASP.Net Membership 附加字段
【发布时间】:2011-07-05 14:47:01
【问题描述】:

我正在启动一个新的 ASP.Net MVC 3 应用程序,我希望能够使用内置的 Membership 提供程序。

我遇到的问题是我的应用程序可以被各种组织使用,重要的是显示的信息仅适用于用户所在的组织。

不费吹灰之力的方法是坚持所有用户都使用他们的电子邮件地址作为他们的用户名,这样每个人都是独一无二的,并且可以与各自的组织相关联。问题是,一些用户没有电子邮件地址,因此没有可靠的方法来确保唯一的名称,我不希望人们知道不同组织已经使用的用户名。 (用户名应该只对组织来说是唯一的,而不是整个应用程序)

理想情况下,我希望用户在一个字段中输入他们的组织名称,然后在另一个字段中输入他们的用户名(然后是密码!)

所以我们可以让 Jane 从一个组织登录.....

Organization   Company1
Username       Jane
Password       ********

然后其他人也叫 Jane 可以从不同的组织登录..

Organization   Company2
Username       Jane
Password       ********

所以我的问题是,修改会员系统以允许这个额外字段的最佳方法是什么?

【问题讨论】:

  • 在我看来,这对于默认的会员提供者来说太过分了。由于要求允许跨公司使用相同的用户名,因此要使其在默认提供程序之外工作也需要做很多工作。您在这里实质上介绍的是用户的组合 ID,它由 (CompanyID, UserID) 组成。这将使整个地方的事情变得复杂(例如您的应用程序)

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


【解决方案1】:

我会编写一个自定义 MembershipProvider 来满足要求。

http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

【讨论】:

    【解决方案2】:

    会员使用的提供者模式旨在让您可以扩展它。您可以从默认提供者和默认成员使用类继承来添加您需要的字段。这使您不必从头开始编写提供程序。正如@mare 指出的那样,虽然存在潜在的陷阱。

    我可能会通过一个提示输入组织、用户名和密码的登录表单来克服这些问题,但在幕后将组织和用户名结合起来并将其用作内部用户名。

    【讨论】:

    • 是的,我也会这样做,将组织和用户名组合成一个完整的用户名 (ID)。或者,如果公司不提供电子邮件,请自行介绍。像“name@company.com”,并不意味着它们必须存在于邮件系统或类似的东西中......
    • +1 用于在尝试编写自己的自定义会员提供程序之前提出一些简单的建议(例如在幕后组合用户名/组织)(如 @Bumble Bee 所建议的那样)
    • @hector:他肯定会得到一个自定义提供程序。除非他的要求会改变。
    • @Simon +1 我已经尝试过结合组织/用户详细信息,然后将其拆分出来,这似乎可行,因此看到您的建议令人鼓舞。我可能会使用这种方法。 @Mare 也感谢您的建议,如果一切都失败了,user@company.com 始终是一个选择!
    【解决方案3】:

    内置(默认 ASP.NET)成员资格提供程序不提供组织/公司/公司或部门的概念。您将在数据库中为那些具有 aspnet_users 表的外键的人创建自己的表,以便能够存储该附加信息(我不会更改默认 aspnet_users 表,因为它可能使其与当前表不兼容默认提供者或未来提供者)。然后,您将需要为默认功能使用默认提供程序并创建一个服务类来支持扩展功能。我知道,我已经做到了。它变得复杂和肮脏,需要时间,但它是完全可行的。

    您很可能最终会创建自己的提供商,并且首先需要支持公司中的用户。如果您认为没有必要更改默认提供程序以支持它。关于公司内部唯一性的要求是您必须实施的另一项要求。

    【讨论】:

      【解决方案4】:

      我认为会员资格中有一个内置选项。查看表 my_aspnet_users 中的 APPLICATION 字段。 参考这里: http://msdn.microsoft.com/en-us/library/system.web.security.membership.applicationname.aspx

      【讨论】:

        猜你喜欢
        • 2013-03-22
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多