2012-02-20 35 views
6

Sto provando a visualizzare una barra degli strumenti nella parte superiore della schermata di un utente se sono connessi, dove possono accedere al proprio account ecc. Se non sono connessi, verrà visualizzato un modulo che consente loro per accedere. Non sono del tutto sicuro di come farlo usando C# e Razor e continuo a commettere errori di sintassi e compilazione.Verifica se il cookie è impostato

La mia forma attuale è la seguente: Ho un file, _siteLayout.cshtml. Questo memorizza la barra degli strumenti nella parte superiore dello schermo. Controlla il modulo di login sul database esterno e, se è autenticato, crea un cookie al client. Il modulo che voglio essenzialmente è

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

Semplice, ma sto incontrando un sacco di problemi. Qui è il mio codice, rimuovendo la massa, finora:

<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> 

Qual è il modo migliore di fare ciò che desidero fare? Nel mio codice attuale, il modulo di accesso e le pagine di gestione dell'account sono ovviamente molto più grandi, quindi è un po 'più confuso, quindi perché li ho rimossi dal codice sopra.

+2

hai considerato l'utilizzo di FormsAuthentication? http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx –

+0

Sì, tuttavia non penso che supporterà il modo in cui voglio eseguire l'autenticazione - Sto verificando le informazioni di accesso degli utenti contro un server remoto piuttosto che uno memorizzato localmente. –

+1

Sono d'accordo con Pauli - usa il sistema integrato. È molto facile perdere qualcosa/lasciare aperto un buco di sicurezza. – Paddy

risposta

0

Questo vi aiuterà a conoscere Cookies in ASP.NET using C#.

+1

mentre il link fornito è una buona risorsa, nella stessa pagina viene spostato è una buona idea fornire una risposta sulla pagina e fare riferimento al link come fonte per ulteriori informazioni. – mgrenier

Problemi correlati