2017-11-17 4 views
0
string currentUser; 
string currentPassword; 
string getUserName; 
string getPassword; 

getUserName = Convert.ToString(Session["UserName"]); 
getPassword = Convert.ToString(Session["Password"]); 

currentUser = Convert.ToString(txtUserNameLogIn.Text); 
currentPassword = Convert.ToString(txtPasswordLogin.Text); 

if ((currentUser == getUserName) && (currentPassword == getPassword)) { 
    currentUser = Convert.ToString(Session["CurrentUser"]); 
    currentPassword = Convert.ToString(Session["CurrentPassword"]); 
    Response.Redirect("Home.aspx"); 
} else { 
    lblResult.Text = "Invalid Password"; 

} 

Ich habe 3 Seiten. Der erste für die Registrierung, der Benutzernamen und das Passwort für eine Sitzung speichert und dann habe ich eine Login-Seite, die die UserName und Password Sessions nehmen und mit der aktuellen Benutzereingabe auf dieser Seite vergleichen sollte. Bis jetzt bekomme ich keine Antworten.Vergleichen Sitzungsvariable mit einem String C#

Bearbeiten: Der Benutzername und das Passwort, die ich auf der vorherigen Seite eingegeben habe, wird in einer Sitzungsvariablen namens "UserName" gespeichert, die Person wird auf die Anmeldeseite umgeleitet und ich möchte nur vergleichen, welche Benutzertypen mit der Sitzung Variabel von der vorherigen Seite und wenn es korrekt ist, speichern Sie diese Informationen in der neuen Sitzungsvariablen und leiten Sie den Benutzer auf die Startseite um.

+4

Nicht zu feinen Punkt auf sie zu setzen, ich glaube nicht, sollten Sie Benutzernamen und Passwort in der Sitzung –

+2

Zunächst einmal im Klar/Klartext, je ein Benutzer-Passwort nicht speichern werden die Speicherung in jeder bilden. Zweitens, missbrauche die Sitzung nicht so. Es gibt viele * gute * Authentifizierungs- und Autorisierungs-Frameworks, die Sie kostenlos nutzen können. Recherchieren Sie und nutzen Sie eine solche, damit Ihre Website nicht nur ein weiterer Fundus an Benutzerinformationen ist, der vom ersten Hacker, der darauf stößt, genutzt werden kann. – Igor

+0

Es ist nur für eine Programmierkursarbeit, wir lernen und verstehen nur, wie das funktioniert. – MrDarkness96

Antwort

0

Sie können unter der Annahme, dass es sich um ein Testprojekt handelt, mehrere Dinge tun, und Sie wissen, dass Session nicht der richtige Ort ist, um Klartext-Anmeldeinformationen zu speichern. Werfen Sie einen Blick auf SimpleMembership für einen saubereren Ansatz.

Aus diesem Weg habe ich zwei Erweiterungsklassen erstellt. Der erste kümmert sich um die String-Sicherheit und der zweite kümmert sich um die Session. Sie können einen Schritt weiter gehen und Konstanten für die Schlüssel oder sogar ein SessionUser-Objekt erstellen. In Bezug auf den Vergleich habe ich nur Benutzername + Passwort kombiniert, so dass die Logik kurz ist.

public static class StringExtensions 
{ 
    public static string Encrypt(this string plainText) 
    { 
     // Replace with your encryption impl 
     return plainText; 
    } 

    public static string Decrypt(this string hiddenText) 
    { 
     // Replace with your decryption impl 
     return hiddenText; 
    } 
} 

public static class SessionExtensions 
{ 
    public static void Set<T>(this HttpSessionState sessionState, string key, T value) 
    { 
     sessionState[key] = value; 
    } 

    public static T Get<T>(this HttpSessionState sessionState, string key) where T : class 
    { 
     return (T)sessionState[key]; 
    } 
} 

public partial class _Default : Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Session.Set("UserName", "something"); 
     Session.Set("Password", "something".Encrypt()); 

     var username = Session.Get<string>("UserName"); 
     var password = Session.Get<string>("Password").Decrypt(); 

     var savedUser = $"{username}{password}"; 
     var currentUser = $"somethingsomething"; 

     if (currentUser.Equals(savedUser, StringComparison.InvariantCultureIgnoreCase)) 
     { 

     } 
     else 
     { 

     } 
    } 
}