Die überprüfung, ob cookie gesetzt ist

Ich versuche zu Rendern einer Symbolleiste am oberen Rand eine Benutzer-Bildschirm, wenn Sie angemeldet sind, wo Sie Zugriff auf Ihre Konto usw. Wenn Sie nicht eingeloggt sind, erscheint ein Formular, so dass Sie auf log-in. Ich bin mir nicht ganz sicher, wie dies mit C# und Razor und halten Sie schlagen syntax und Kompilierung Fehler.

Meine derzeitige form ist wie folgt : ich habe eine Datei, _siteLayout.cshtml. Diese speichert die Symbolleiste am oberen Rand des Bildschirms. Es überprüft das login-Formular gegen die externe Datenbank, und wenn es authentifiziert ist, schafft gibt dem client ein cookie. Die form, die ich im Grunde will, ist

if(user logged in)
   render account management page
else{
   render login page
}

Einfach, aber ich bin mit einer Menge Probleme. Hier ist mein code, entfernen der Masse, so weit :

<body>
    @using System.Text;
    @using System.Net.Sockets;
   @{
        if(Request.Cookies["mpUsername"] == null){
        //if user is not logged in  
            //some authentication is ran, if passed, isValid is set to true    
                if (isValid) {
                    //login is valid, set cookie
                    HttpCookie cookie = Request.Cookies.Get("mpUsername");
                if(cookie == null) {
                    cookie = new HttpCookie("mpUsername");
                    cookie.Value = username;
                    cookie.Expires = DateTime.Now.AddDays(3);
                    Response.Cookies.Add(cookie);
                }
                } else {
                    //login invalid, prompt for pass again
                <text>Password incorrect, please try again</text>
                }
            } 
    }
  }//end of razor, HTML begins
    <html>
        <body>
        @{  //if cookie is set
            //if(Request.Cookies["mpUsername"] == null){   

        }
        <h2>ACCOUNT MANAGEMENT</h2>
        @{
          } else {//user not logged in, cookie not set
         }
        //login form
        </body>
    </html>

Was ist der beste Weg, das zu tun, was ich Wünsche zu tun? In meinem eigentlichen code, der login-Formular-und account-management-Seiten sind offenbar weit größer, so ist es ein wenig verwirrend, weshalb ich Sie entfernt diese aus dem code oben.

haben Sie sich überlegt mit FormsAuthentication ? msdn.microsoft.com/en-us/library/...
Ja, aber ich glaube nicht, dass die Unterstützung, wie ich will, die Authentifizierung, um zu laufen - ich bin der überprüfung der Benutzer-login-info gegen einen entfernten server und nicht lokal gespeichert.
Ich Stimme mit Pauli - verwenden Sie das eingebaute system. Es ist sehr leicht etwas zu verpassen/hinterlassen Sie eine Sicherheitslücke öffnen.
Sie können erweitern die basic forms-auth-Klassen, um Ihre tatsächliche überprüfung der Art und Weise, die Sie benötigen, während immer noch mit der form-Authentifizierung 'framework'.
wie authentifizieren Sie ist nicht wirklich von FormsAuthentication-business. Alles, was Sie tun müssen, ist anrufen SetAuthCookie msdn.microsoft.com/en-us/library/twk5762b.aspx, wenn der Benutzer bereitgestellten Anmeldeinformationen überprüft werden kann.

InformationsquelleAutor Simon Kiely | 2012-02-20

Schreibe einen Kommentar