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.
¿Ha considerado usar FormsAuthentication? http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx –
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. –
Estoy de acuerdo con Pauli: use el sistema integrado. Es muy fácil perder algo/dejar abierto un agujero de seguridad. – Paddy