2016-10-31 3 views
1

Könnte ein BrainFart sein aber, immer wenn ich versuche, meine Anmeldeinformationen in meinem Webformular gegen die Anzeige zu validieren, gibt es immer wahr (genehmigt), warum ist das? Dies ist nur ein Test, um seine Arbeits stellen Sie sicher, wenn ich auf die Schaltfläche klicken „Eintragen“:Überprüfen Sie die Anmeldeinformationen für AD

protected void Button1_Click(object sender, EventArgs e) 
    { 
     string username1 = uniloginTextBox.Text; 
     string password1 = passwordTextBox.Text; 

     using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "cv.local")) 
     { 
      // validate the credentials 
      bool isValid = pc.ValidateCredentials(username1, password1, ContextOptions.Negotiate); 
     } 

     if (IsValid == true) 
     { 
      Label.Text = "approved"; 
     } 
     else if (IsValid == false) 
     { 
      Label.Text = "Denied"; 
     } 
+2

Sie überprüfen einige Objekt mit dem Namen 'IsValid', nicht die Bool' isValid' (beginnt man mit dem Kapital, andere nicht), die Sie nicht überprüfen konnte sowieso, weil es in diesem Kontext nicht existieren wird. Verschiebe 'isValid' außerhalb des Using, setze es standardmäßig auf false, setze seinen Wert innerhalb des' using' und überprüfe es anschließend mit 'Label1.Text = isValid? "Approved": "Denied"; ' – Equalsk

+0

Ja, isValid mit einem kleinen i befindet sich im using-Block. Es stirbt, sobald der Block endet. IsValid mit einem Kapital I ist eine andere Sache. –

Antwort

1

Ihre if Aussage wird den Wahrheitswert eines Objekts IsValid namens überprüfen. Die von Ihnen erstellte bool heißt isValid. Man beachte, dass man mit einem Kapital beginnt und das andere nicht.

Die Bool isValid wird nicht außerhalb Ihres Verwendungsblocks existieren, wie es innen deklariert wird. Bewegen Sie isValid außerhalb der using-Anweisung wie folgt aus:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    // Username and password text 
    var username1 = uniloginTextBox.Text; 
    var password1 = passwordTextBox.Text; 

    // isValid defaults to false 
    bool isValid = false; 

    // Check credentials against AD 
    using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "cv.local")) 
    { 
     // Set value for isValid 
     isValid = pc.ValidateCredentials(username1, password1, ContextOptions.Negotiate); 
    } 

    // Achieves the same as your if statement 
    Label.Text = isValid ? "Approved" : "Denied"; 
} 
Verwandte Themen