Avatar billede scorp-d Nybegynder
27. april 2009 - 13:14 Der 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"!



Min web.config ser således ud:

<membership>       
<providers>
               
<remove name="AspNetSqlMembershipProvider"/>
               
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="0"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""/>
           
</providers>       
</membership>


På forhånd tak.
Scorp-D
Avatar billede websam Nybegynder
27. april 2009 - 17:44 #1
Kan du ikke nøjes med at lave password af a-z og 0-9 når du generere dem ?

Ellers kan du vel sende en mail ud til alle brugere med deres password ?
Avatar billede scorp-d Nybegynder
28. april 2009 - 10:23 #2
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.
Avatar billede scorp-d Nybegynder
28. april 2009 - 14:15 #3
Valgte at lave min egen PasswordReset metode.

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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester