增加自定义ASP.Net成员身份中的最大UserName长度

时间:2016-03-04 13:49:12

标签: asp.net asp.net-membership

我正在使用ASP.NET的成员资格提供程序。 UserName的最大长度为50。 有没有办法增加它?

我已经尝试增加db中的列大小但是对于具有ProviderError的长用户名,MemberShip.CreateUser失败

2 个答案:

答案 0 :(得分:1)

您始终可以覆盖UserName属性,并通过DataAnnotations指定StringLength。默认情况下,这将在您的IdentityModel.cs文件中。

将此行添加到public class Server { public static void main(String args[]) throws IOException { final int portNumber = Integer.parseInt(args[0]); System.out.println("Initializing server socket at port" + portNumber); ServerSocket serverSocket = new ServerSocket(portNumber); long mainTime = System.currentTimeMillis()/1000; while (true) { Socket socket = serverSocket.accept(); OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os, true); if((System.currentTimeMillis()/1000-mainTime)%60>1)){ String time = getTime(); pw.println("Current server time is: " + time); } pw.close(); socket.close(); } } public String getTime(){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String stringTime = sdf.format(date); return stringTime; } 班级:

ApplicationUser

我刚刚运行了一个测试,并创建了一个70字符长度字符串的用户。

答案 1 :(得分:0)

  

增加自定义 ASP.Net成员资格

中的最大用户名长度

您的自定义成员资格提供者应实施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字符。

所以你必须做两件事。

  1. 在数据库架构中,将用户名表字段长度增加到正确的最大允许大小。
  2. 在自定义ASP.Net成员资格提供程序(继承自System.Web.Security.MembershipProvider的类)中,更改CreateUser方法中的验证,以便检查正确的最大允许字符数。
  3. 如果您不确定您的哪个类正在实施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;
      }