问题来源:
在ASP.net 2.0里面提供的CreateUserWizard控件,如果设置AutoGeneratePassword为True,则系统会自动生成密码发到注册用户的邮箱。
问题就是,系统自动生成的密码太复杂了,导致我的软件的用户无所适从,当然,用户的计算机应用水平也不是很高~有些阿姨对电脑知识掌握的实在不能满足我们的期望。
例如系统生成的密码:
P[N{_B:0x^
aV=}c|+@jU(你可以看到,如果自动生成的密码中间出现@,outlook还会自动转变为邮件链接)
结果屡屡不断有电话打来说用这个密码登录不进去,请问大家有什么办法解决么?我的意思是说能让密码简单一些,例如全是数字或者小写字母,我对系统的安全性要求的确没有那么高~!
这是我前面提出的问题,最后自己解决了:
代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

public partial class register : System.Web.UI.Page
{
string SimplePassword = "";

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
//获取当前生成的用户
MembershipUser user = Membership.GetUser(CreateUserWizard1.UserName);
SimplePassword = GererateSimplePassword(8);
//CreateUserWizard把自动生成的密码放在CreateUserWizard1.Password里,因此可以使用user.ChangePassword修改密码
user.ChangePassword(CreateUserWizard1.Password, SimplePassword);
}

//生成随机的简单密码,来源自:http://www.cnblogs.com/sskset/archive/2006/12/05/583044.html
public string GererateSimplePassword(int stringLength)
{
StringBuilder strReturn = new StringBuilder();
do
{
strReturn.Append(Guid.NewGuid().ToString().Replace("-", string.Empty));
}
while (strReturn.Length < stringLength);
return strReturn.ToString(0, stringLength);
}

protected void CreateUserWizard1_SendingMail(object sender, MailMessageEventArgs e)
{
CreateUserWizard1.MailDefinition.BodyFileName = "~/Register.txt";
e.Message.IsBodyHtml = false;
e.Message.BodyEncoding = System.Text.Encoding.UTF8;
//替换注册邮件中的<%NewPassword%>为简单密码就可以了
e.Message.Body = e.Message.Body.Replace("<%NewPassword%>", SimplePassword);
e.Message.Body = e.Message.Body.Replace("<%PasswordQuestion%>", CreateUserWizard1.Question);
e.Message.Body = e.Message.Body.Replace("<%PasswordAnswer%>", CreateUserWizard1.Answer);
}
}
在ASP.net 2.0里面提供的CreateUserWizard控件,如果设置AutoGeneratePassword为True,则系统会自动生成密码发到注册用户的邮箱。
问题就是,系统自动生成的密码太复杂了,导致我的软件的用户无所适从,当然,用户的计算机应用水平也不是很高~有些阿姨对电脑知识掌握的实在不能满足我们的期望。
例如系统生成的密码:
P[N{_B:0x^
aV=}c|+@jU(你可以看到,如果自动生成的密码中间出现@,outlook还会自动转变为邮件链接)
结果屡屡不断有电话打来说用这个密码登录不进去,请问大家有什么办法解决么?我的意思是说能让密码简单一些,例如全是数字或者小写字母,我对系统的安全性要求的确没有那么高~!
这是我前面提出的问题,最后自己解决了:
代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
public partial class register : System.Web.UI.Page
{
string SimplePassword = "";
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
//获取当前生成的用户
MembershipUser user = Membership.GetUser(CreateUserWizard1.UserName);
SimplePassword = GererateSimplePassword(8);
//CreateUserWizard把自动生成的密码放在CreateUserWizard1.Password里,因此可以使用user.ChangePassword修改密码
user.ChangePassword(CreateUserWizard1.Password, SimplePassword);
}
//生成随机的简单密码,来源自:http://www.cnblogs.com/sskset/archive/2006/12/05/583044.html
public string GererateSimplePassword(int stringLength)
{
StringBuilder strReturn = new StringBuilder();
do
{
strReturn.Append(Guid.NewGuid().ToString().Replace("-", string.Empty));
}
while (strReturn.Length < stringLength);
return strReturn.ToString(0, stringLength);
}
protected void CreateUserWizard1_SendingMail(object sender, MailMessageEventArgs e)
{
CreateUserWizard1.MailDefinition.BodyFileName = "~/Register.txt";
e.Message.IsBodyHtml = false;
e.Message.BodyEncoding = System.Text.Encoding.UTF8;
//替换注册邮件中的<%NewPassword%>为简单密码就可以了
e.Message.Body = e.Message.Body.Replace("<%NewPassword%>", SimplePassword);
e.Message.Body = e.Message.Body.Replace("<%PasswordQuestion%>", CreateUserWizard1.Question);
e.Message.Body = e.Message.Body.Replace("<%PasswordAnswer%>", CreateUserWizard1.Answer);
}
}
Register.txt内容如下:
--------------------------------------------------------------------------------
尊敬的用户:您好!
您的系统账号已经开通:
账号:<%UserName%>
密码:<%NewPassword%>
如果需要重设您的密码,您需要回答以下问题:
问题: <%PasswordQuestion%>
答案: <%PasswordAnswer%>
请在登录系统后,修改您的个人资料,以便我们提供更好的服务。
----------------------------------------------------------------------------------


浙公网安备 33010602011771号