2009-08-27 3 views
3

Я использую провайдера членства asp.net в приложении. Я также использую «из коробки» asp: PasswordRecovery control.Asp.Net членский пароль сбрасывается без символов

Мой клиент жалуется, что новые пароли, выпущенные, слишком сложны. , например. }> ;-(hYrS^OTfY

Есть ли какие-либо небольшие хитрости я могу сделать так, что новые пароли содержат только буквы и цифры

благодаря

+0

Я посмотрел и не смог найти способ повлиять на функциональность ResetPassword() через web.config. Скорее всего, вам придется создать собственное решение проблемы. – Greg

+1

В этой статье содержится дополнительная информация о том, как создать собственное решение: http://dotnet.sys-con.com/node/837990 – Greg

+0

Спасибо, Грег! Я отправлю код, который я разработал из этой статьи позже на этой неделе – aron

ответ

4

Это сработало?!

using System; 
using System.Collections.Generic; 
using System.Web.Profile; 
using System.Web.Security; 
using System.Text; 

namespace TS.Common.MembershipProvider 
{ 
    public class MembershipProvider : SqlMembershipProvider 
    { 
     /// Create an array of characters to user for password reset. 
     /// Exclude confusing or ambiguous characters such as 1 0 l o i 
     string[] characters = new string[] { "2", "3", "4", "5", "6", "7", "8", 
      "9", "a", "b", "c", "d", "e", "f", "g", "h", "j", "k", "m", "n", 
      "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; 

     const int DefaultResetPasswordLength = 10; 
     private int ResetPasswordLength; 

     // Create a more user friendly password to avoid confusion when 
     // trying to key in the new value 
     public override string GeneratePassword() 
     { 
      string newPassword = string.Empty; 
      System.Random rnd = new Random(); 

      for (int i = 0; i < ResetPasswordLength; i++) 
      { 
       newPassword += 
       characters[rnd.Next(characters.GetUpperBound(0))]; 
      } 
      return newPassword; 
     } 
    } 

}