更改默认成员资格提供程序模型定义

时间:2013-06-03 15:45:33

标签: asp.net entity-framework-5 membership-provider

我们正在项目中使用 System.Web.Security.DefaultMembershipProvider ,我们已经碰壁了。

MembershipProvider合约的这个特定实现使用硬编码模型定义( System.Web.Providers.ModelHelper.membershipSsdl和Sytem.Web.Providers.ModelHelper.membershipCsdl )来创建模型并生成数据库使用EntityFramework。

此特定型号定义将用户名字段的最大长度设置为 50 字符,将电子邮件字段的最大长度设置为 256 个字符。现在,在很多场景中,我们的用户可能希望/被要求将他们的电子邮件地址用作他们的用户名。很明显,对于很多人来说这是不可能的,因为这个模型中的数据验证会失败。

从我所看到的,无法覆盖此模型定义,并且作为Microsoft Open Source程序的一部分,CodePlex上的ASPNET Universal Providers库的源代码不可用。然而,visual studio中的resharper将执行大量的反编译,这使我们可以看到实现的内部工作。

在这个时刻,我们已经辞去了“实施您自己的会员服务提供商”的路线,但我/我们想知道是否有人在这个问题上有任何建议/替代想法/建议。否则看起来我们要复制几千行现有MS代码只是为了改变几个字符。

1 个答案:

答案 0 :(得分:1)

对于对此问题感兴趣的任何人,我们决定不再滚动我们自己的提供程序数据存储区,只是将用户名字段的使用隐藏在最终用户之外。他们的电子邮件地址被用作他们的用户名'但在内部,我们实际上在用户名字段中存储了一个guid,并编写了一些代码,以便在内部从电子邮件转换为' username'在执行身份验证之前。不是很好,但它让我们超越了界限。