我正在使用ASP.NET的成员资格提供程序。 UserName的最大长度为50。 有没有办法增加它?
我已经尝试增加db中的列大小但是对于具有ProviderError的长用户名,MemberShip.CreateUser失败
答案 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字符。
所以你必须做两件事。
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;
}