问题来源:
在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%>  
 请在登录系统后,修改您的个人资料,以便我们提供更好的服务。
----------------------------------------------------------------------------------
   

posted on 2007-05-17 16:06  肖斯沃勒  阅读(658)  评论(0)    收藏  举报