增加自定义 ASP.Net Membership 中的最大用户名长度
您的自定义成员资格提供程序应实现System.Web.Security.MembershipProvider(请参阅MembershipProvider)。这有一个你必须重写的方法:
public abstract MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status);
这是您必须自己验证方法参数的地方,包括传入参数的允许长度。您可以查看 System.Web.Security.SqlMembershipProvider 的内置代码作为验证用户名长度不超过 128 个 unicode 字符的示例。
所以你必须做两件事。
- 在您的数据库架构中,将用户名表字段长度增加到正确的最大允许大小。
- 在您的自定义 ASP.Net Membership 提供程序(继承自
System.Web.Security.MembershipProvider 的类)中更改 CreateUser 方法中的验证,以便检查正确的最大允许字符数。
如果您不确定您的哪个类正在实现MembershipProvider,您可以搜索该字符串的代码文件,或者您可以在此处查看您的web.config 文件以获取类型。
<configuration>
<system.web>
<membership defaultProvider="providerName" >
<providers>
<add name="providerName" type="System.Web.Security.SqlMembershipProvider"
来自SqlMembershipProvider的代码片段
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
if (!SecUtility.ValidateParameter(ref password, true, true, false, 128)) // check on 128 maximum length
{
status = MembershipCreateStatus.InvalidPassword;
return (MembershipUser) null;
}