Una de las preguntas más frecuentes que he visto últimamente en foros de asp.net es como montar un sistema de seguridad para que solo un determinado usuario puede acceder a una parte de la web. Dependiendo de muchos factores una solución simple nos puede valer, y esto es lo que propongo en este artículo.
Supongamos que tenemos una web, y queremos un panel administrativo en la carpeta "admin", donde podremos un formulario Login.aspx para validar al usuario "adminstrador". Para hacer esto añadiremos esto a nuestro web.config
<authentication mode="Forms">
<forms name="appNameAuth" loginUrl="~/admin/login.aspx" protection="All" timeout="30" defaultUrl="~/admin/default.aspx">
<credentials passwordFormat="Clear">
<user name="admin" password="admin" />
</credentials>
</forms>
</authentication>
<location path="admin">
<system.web>
<authorization>
<deny users ="?" />
</authorization>
</system.web>
</location>
Con esto estamos indicando que vamos a usar la autenticación de formularios, con una pagina de login en ="~/admin/login.aspx y la pagina principal en ="~/admin/default.aspx.
Tambien hemos creado un usuario con nombre admin y contraseña admin, que se pone en texto claro.
Ahora creamos una página de Login.aspx donde pondremos esto
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="admin_Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Página sin título</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Login ID="LoginManager" runat="server" OnAuthenticate="LoginManager_Authenticate" />
</div>
</form>
</body>
</html>
y esto
protected void LoginManager_Authenticate(object sender, AuthenticateEventArgs e)
{
string user = LoginManager.UserName;
string pass = LoginManager.Password;
if (FormsAuthentication.Authenticate(user, pass))
FormsAuthentication.RedirectFromLoginPage(user, false);
}
Tras esto, los usuario que quieran acceder a cualquier pagina que esté en la carpeta admin, tendrá que pasar por login.aspx y solo los usuarios autenticados podrán ver estás páginas.
Como vemos esto es sólo el principio y el número de posibilidades que tenemos son infinitas, pero creo que este ejemplo sirve perfectamente para ilustrar como empezar a trabajar. Tenemos muchísima información en la MSDN y en foros como ASP.NET.
Para cualquier consultar dejar un comentario, aquí mismo.