27. april 2009 - 13:14Der er
2 kommentarer og 1 løsning
AspNetSqlMembershipProvider/PasswordRecovery, simpel password ved PasswordReset
Hej.
Jeg har en hjemmeside hvor jeg benytter login, loginview og hvad der ellers hører til I den kategori.
Da mine brugere allerede eksistere i et andet system har jeg blot oprettede dem udefra deres brugernummer, mail og en tilfældig autogenereret kode:
Membership.CreateUser(UserName, Membership.GeneratePassword(12, 0).ToLower(), email, "None", "None", true, out createStatus);
Når en bruger så gerne vil ind I systemet laver han password-recovery på hjemmesiden med hans brugernummer og en ny kode bliver sendt til den registreret mail-adresse.
Problemet er at den nye kode der bliver sendt er alt for kompleks, så en del af brugerne kan ikke finde ud af at indtaste den, fordi de ikke kender til Copy&Paste eller hvor fx tegnene { , } ,[ , ] befinder sig på tastaturet.
Hvordan kan jeg få en mindre kompleks kode ud til brugeren? Uden at benytte "Password Retrieval"!
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Jeg har ikke rettigheder til at sende uopfordret mails på de mail-adresser, det er kun hvis de selv forespørger.
Jeg ved ikke hvor jeg skal ændre for at passwordet bliver rent alfanumerisk!
For de koder jeg genere(skulle meget gerne være a-z & 0-9 i lower-case) bliver jo overskrevet første gang brugeren beder om et nyt password… Så det må være en opsætning jeg har overset.
1) Lavede en tabel i DB'en som indeholder GUID, Brugernavn og Dato.
2) Når brugeren beder om en ny adgangskode så oprettes en ny række i tabellen:
GUID = System.Guid.NewGuid().ToString(); Brugernavn = Angivet brugernavn Dato = DateTime.Now;
3) En mail med et link til siden indeholdende den standarde ChangePassword, og 2 querystrings(GUID & Brugernavn) sendes til brugeren.
4) Hvis siden ser 2 querystrings og dato'en som passer til disse(i DB'en) er under 1 time gammel:
Slås validation fra på CurrentPassword og CurrentPasswordRequired ChangePasswordPushButton sættes til at gå til en ChangePasswordPushButton_Click metode.
5) ChangePasswordPushButton_Click tjekker om NewPasswordRequired, ConfirmNewPasswordRequired, NewPasswordCompare er sat til valid.
6) Hvis de er valid, skiftes kodeordet ud med det som står i NewPassword, og rækken med det pågældende GUID slettes i DB'en.
4-6 er lidt en stor omvej, da jeg bare kunne have lavet en ny Form som passede til, men syntes i forvejen at login og alt hvad der høre dertil optager alt for mange Form's.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.