Avatar billede speedpete Nybegynder
16. marts 2006 - 13:53 Der er 22 kommentarer og
1 løsning

detect Membership.MaxInvalidPasswordAttempts

Jeg bruger (i.net2.0) den indbyggede LoginControl. Hvis brugerne indtaster forkert password fem gange, så sættes jo IsLockedOut=true.

Så er det, jeg gerne vil kunne vise en besked, "Din konto er låst pga. for mange forsøg, kontakt administrator", hvis brugeren forsøger at logge på.

Hvordan gør man det? Kan man fange når Membership.MaxInvalidPasswordAttempts når grænsen? Eller noget?
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 14:16 #1
I Onauthenticate kan du lave noget i denne stil:
If (Not Membership.GetUser(userName) Is Nothing)
          If(Membership.GetUser(userName).IsLockedOut = true)
              lblResults.Text = lblResults.Text & "  <b>Your account has been locked out.</b>"
          End If
      End If
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 14:18 #2
i c#
if ((Membership.GetUser(userName) != null) && (Membership.GetUser(userName).IsLockedOut == true))
          lblResults.Text += "  <b>Your account has been locked out.</b>";
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 14:18 #3
Du får username ud med dinlogindcontrol.Username
Avatar billede speedpete Nybegynder
16. marts 2006 - 14:22 #4
Jamen det vil jeg prøve
Avatar billede speedpete Nybegynder
16. marts 2006 - 14:31 #5
... er det noget i denne stil (Jeg tænker på formatet af OnAuthenticate inkl. kald til den oprindelige metode) ?

override protected void OnAuthenticate(AuthenticateEventArgs e)
{
    if ((Membership.GetUser(Login1.userName) != null) && (Membership.GetUser(Login1.userName).IsLockedOut == true))
    {
          // skriv det der nu skalk skrives
    }

    base.OnAuthenticate(e)
}
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 14:41 #6
nej det er på selve logind siden.
der er på din logind kontrol en event som hedder Onauthenticate.
Avatar billede speedpete Nybegynder
16. marts 2006 - 14:48 #7
ok, så jeg har dette:

<asp:Login
ID="Login1"
runat="server"
OnAuthenticate=""
DestinationPageUrl="LoggedIn.aspx"
>

laver jeg så et metodekald,  OnAuthenticate="MinMetode" ?
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 15:05 #8
protected void TryAuthenticate(object sender, EventArgs e)
    {
        if ((Membership.GetUser(Login1.userName) != null) && (Membership.GetUser(Login1.userName).IsLockedOut == true))
        {
            // skriv det der nu skalk skrives
            Login1.FailureText = "Din konto er låst";
        }

    }
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 15:06 #9
<asp:Login ID="Login1" OnLoggingIn="TryAuthenticate"  runat="server">
           
        </asp:Login>
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 15:07 #10
rettelse :
  protected void TryAuthenticate(object sender, LoginCancelEventArgs  e)
    {
        if ((Membership.GetUser(Login1.userName) != null) && (Membership.GetUser(Login1.userName).IsLockedOut == true))
        {
            // skriv det der nu skalk skrives
            Login1.FailureText = "Din konto er låst";
            e.Cancel = true;
        }

    }
Avatar billede speedpete Nybegynder
16. marts 2006 - 15:07 #11
Tak, så er den vist ved at være der. SMid et svar for points...
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 15:07 #12
med den sidste sikre du at login forsøget afbrydes.
Avatar billede speedpete Nybegynder
16. marts 2006 - 15:09 #13
... og hvad har det at sige, at forsøget afbrydes?
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 15:14 #14
så kalder den aldrig optil databasen for at validere i det tilfælde brugeren er låst


svar :)
Avatar billede speedpete Nybegynder
16. marts 2006 - 16:04 #15
AuthenticateEventArgs skal det være...
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 16:06 #16
ikke hvis du bruger OnLoggingIn eventet som mig
Avatar billede speedpete Nybegynder
16. marts 2006 - 16:09 #17
arh... den havde jeg så lige overset... ok.
Avatar billede speedpete Nybegynder
16. marts 2006 - 16:16 #18
... og så var der lige det problem, at man ikke kan referere direkte til Login, så dette blev resultatet, som virker:

protected void TestLockedOut(object sender, LoginCancelEventArgs e)
    {
        Login login = (Login)sender;
        if ((Membership.GetUser(login.UserName) != null) && (Membership.GetUser(login.UserName).IsLockedOut == true))
        {
            e.Cancel = true;
            Response.Redirect("Error.aspx");
        }
    }
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 16:18 #19
Hvad hedder din login control ?
Avatar billede speedpete Nybegynder
16. marts 2006 - 16:22 #20
Den hedder Login1, men den er gemt inden i en template, og så kan man ikke refere til den, så vidt jeg forstår.
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 16:23 #21
ah jeg ellers er det noget med findcontrol og noget skidt på den måde.

Så den måde du gør det på er helt perfekt.
Avatar billede speedpete Nybegynder
16. marts 2006 - 16:27 #22
... ja, det er netop FinControl som ikke kan krydse ind i en tamplate. Man hvad f... nu virker det da.
Avatar billede dr_chaos Nybegynder
16. marts 2006 - 16:30 #23
jeps :)
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