2016-07-29 15 views
1

Ich verweigern Zugriff entweder für eine falsche userEmail oder userPassword verweigern, bin mir aber nicht sicher, wie Sie in beiden Details hinzufügen. und mein Code, um die Anmeldung für eine falsche E-Mail zu verweigern, hat keinerlei Auswirkungen oder gibt Fehler zurück. Es kann nur jeder einloggen. Wie kann ich diesen Code korrigieren?, wie Login-Zugriff für falsche Anmeldung in iOS Swift

+0

In diesem Code haben Sie keine Möglichkeit, sich anzumelden, wo ist der Code, der Ihnen sagt, dass jemand eingeloggt ist? –

+0

es ist ein Login-Button, die Felder sind Benutzer Textfelder auf dem Storyboard. Auf einer anderen Seite befindet sich das Registrierungsformular, in dem Benutzernamen und Benutzerkennwörter gespeichert sind. So prüft diese Seite beim Drücken der Login-Taste, ob ihr Zugang genehmigt oder verweigert wird. –

+0

die Login-Linien, die Arbeit, sind: if (userEmailStored == Useremail) { if (userPasswordStored == userpassword) { // Anmeldung ist erfolgreich NSUserDefaults.standardUserDefaults() setBool (true, forKey. "IsUserLoggedIn "); NSUserDefaults.standardUserDefaults(). Synchronize(); selbst.disneyViewControllerAnimated (true, Abschluss: nil); –

Antwort

1

Das Problem ist, dass Sie zuerst überprüfen, ob die E-Mail korrekt ist, und dann, wenn Sie das Kennwort in diesem Block überprüfen. Sie haben keinen Code zum Ausführen bereitgestellt, wenn die E-Mail falsch ist.

Statt es wie folgt zu strukturieren:

if userEmailStored == userEmail { 
    if userPasswordStored == userPassword { 
     // Login successful 
    } else { 
     // Login unsuccessful 
    } 
} 

Versuchen Sie es wie folgt strukturiert:

if userEmailStored == userEmail && userPasswordStored == userPassword { 
    // Login successful 
} else if userEmailStored != userEmail { 
    // Login unsuccessful (email incorrect) 
} else /* if userPasswordStored != userPassword */ { 
    // Login unsuccessful (password incorrect) 
} 

Hinweis: Linie 5, ich habe if userPasswordStored != userPassword den Zustand kommentiert, weil es ist nicht wirklich erforderlich .

Sie können jedoch feststellen, dass wenn Sie sich bei den meisten Websites anmelden, wenn Sie Ihre Daten falsch erhalten, sie nicht angeben, ob es Ihr Benutzername oder Ihre E-Mail war, die falsch waren.

Zum Beispiel:

Stackoverflow incorrect credentials message

Sie tun es so, weil es sicherer ist. So können Sie einfach zu prüfen, es so zu tun:

if userEmailStored == userEmail && userPasswordStored == userPassword { 
    // Login successful 
} else { 
    // Login unsuccessful 
} 

Wichtiger Hinweis:

Denken Sie daran, dass NSUserDefaults ist in keiner Weise verschlüsselt, so dass, wenn Sie jemals planen auf Speichern Sie einen Benutzernamen und ein Passwort in ... nicht. Es ist als XML (glaube ich) gespeichert, so dass jeder es mit minimalem Aufwand ansehen kann. Verwenden Sie stattdessen Schlüsselbund!


Eine weniger wichtige Anmerkung: Es ist ein Ort, wo man zwei ganze Zeilen Leerzeichen haben zwischen Ihrem else if und seiner Halterung und einige andere unordentlich Dinge im Rest des Codes. Sie werden wahrscheinlich mehr Leute bekommen, die Ihre Fragen beantworten, und es wird Ihnen und anderen Menschen viel leichter fallen, Ihren Code zu verstehen, wenn Sie etwas Mühe haben, ihn lesbarer zu machen. Zwei Leerstellen vor einer öffnenden Klammer sind ein Schandfleck, und viele davon können Code wirklich schwer verständlich machen.

+0

sehr hilfreich! Vielen Dank Soren, ich werde es jetzt versuchen. Und vielen Dank für die Tipps und sehr hilfreiche Erklärung über den Code und um den Code lesbarer zu machen. Ich bin ein Anfänger Lerner (also mehr weißen Raum zu haben, erleichterte es mir zu lesen, und ich hatte geplant, darin Notizen hinzuzufügen) - Ich werde das jetzt bearbeiten, um es lesbarer zu machen. Vielen Dank. –

+0

Sie sind herzlich willkommen! Ich hoffe, Sie können das Problem lösen. Whitespace ist hilfreich, aber versuche es an Orten zu platzieren, die einen logischen Sinn ergeben. Du könntest immer einen Style Guide, wie den [Github Swift Style Guide] (https://github.com/github/swift-style-guide) ansehen, obwohl einige der Dinge darin für ein wenig überflüssig sind Anfänger. Sie könnten auch einen Blick auf Code werfen, um zu versuchen, ein Gefühl dafür zu bekommen, wie die Leute ihren Code auslegen ([schamloser Selbst-Plug] (https://github.com/sorenmortensen/Symonds-API)). Viel Glück für Sie, und ich bin mir sicher, mit Erfahrung wird Ihr Code schön werden :) –

+0

@DimitriT Übrigens, wenn meine Antwort Ihnen helfen würde, würden Sie etwas dagegen haben, es als akzeptiert zu markieren? –