2012-02-20 16 views
6

Estoy tratando de mostrar una barra de herramientas en la parte superior de la pantalla de un usuario si está conectado, dónde puede acceder a su cuenta, etc. Si no está conectado, se mostrará un formulario que le permita para iniciar sesión. No estoy del todo seguro de cómo hacer esto usando C# y Razor y seguir tocando la sintaxis y los errores de compilación.Comprobando si la cookie está configurada

Mi formulario actual es el siguiente: Tengo un archivo, _siteLayout.cshtml. Esto almacena la barra de herramientas en la parte superior de la pantalla. Comprueba el formulario de inicio de sesión con la base de datos externa y, si está autenticado, crea una cookie para el cliente. La forma que esencialmente quiero es

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

Simple, pero me estoy enfrentando a muchos problemas. Aquí está mi código, quitando la mayor parte, hasta ahora:

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

¿Cuál es la mejor manera de hacer lo que deseo hacer? En mi código actual, el formulario de inicio de sesión y las páginas de administración de cuentas son obviamente mucho más grandes, por lo que es un poco más confuso, por lo tanto, por qué eliminé estas del código anterior.

+2

¿Ha considerado usar FormsAuthentication? http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx –

+0

Sí, sin embargo, no creo que sea compatible con la forma en que quiero que se ejecute la autenticación. Estoy verificando la información de inicio de sesión de los usuarios. contra un servidor remoto en lugar de uno almacenado localmente. –

+1

Estoy de acuerdo con Pauli: use el sistema integrado. Es muy fácil perder algo/dejar abierto un agujero de seguridad. – Paddy

Respuesta

0

Esto le ayudará a aprender sobre Cookies in ASP.NET using C#.

+1

mientras que el enlace proporcionado es un buen recurso, incluso en el caso de que se mueva esa página, es una buena idea proporcionar una respuesta en la página y hacer referencia al enlace como fuente para obtener más información. – mgrenier

Cuestiones relacionadas