Formas de autenticación no permite funciones de autenticación. En este artículo se explica cómo aplicarla.
Formas básicas de autenticación
Autenticación basada en formularios en ASP.NET es muy útil. En vez de escribir nuestros propios procesos de autenticación, podemos simplemente cambiar el web.config bajo system.web al igual que ....
<authentication mode="Forms"/>
<formas
name = "MyWebsiteCookieName"
loginUrl = "/ Login.aspx"
protección = "All"
timeout = "180"
/>
</ autenticación>
- El modo de autenticación se establece en las formas.
- Un URL es siempre a fin de que sabe dónde ASP.NET para redirigir las personas que necesitan acceder a pulg
- A tiempo se especifica en cuestión de minutos. Este es el "tiempo desde la última solicitud" no "desde el momento de acceso". Si un ingreso está indicado para ser persistente (se describe más adelante), esto es ignorado.
- Un método de protección se especifica para la cookie.
Siguiente quería especificar la carpeta en la que el acceso está restringido a las personas que han conectado Para ello me entró el siguiente código en el archivo Web.config (debajo de <configuration>) ...
<Location path="Members">
<system.web>
<authorization>
<deny users="?"/>
</ autorización>
</ system.web>
</ Location>
Esto le dice a ASP.NET que el camino "/ Miembros" (la cabeza / está siempre implícita) debe denegar el acceso a todos los usuarios desconocidos. Cuando alguien intenta tener acceso a una página en el / los diputados que en lugar de ser redirigido a la URL que login.aspx se especifica en el web.config.
Forma Login.aspx Este debería pedir a cualquiera que sea la que desea credenciales (nombre de usuario / contraseña, por ejemplo) y validarlos. Una vez que han sido validados sólo tendrá que ejecutar el siguiente código para que el usuario redirige a la página en que se trata de acceso ...
System.Web.Security.FormsAuthentication.RedirectFromLoginPage (idUsuario, false);
El ID del usuario es el identificador único para el actual usuario (username), y el segundo parámetro booleano indica si esta debe ser la persistencia de una cookie de seguridad, o una temporal (con vencimiento desde la última solicitud de la página), como se mencionó anteriormente.
Funciones
Fue en este punto que me di cuenta de que necesitaba una especial / carpeta Admin. Esta carpeta sólo debe acceder a los administradores, y no los usuarios normales. Para esto obviamente necesita papeles en el web.config (por debajo de <configuration>) como así. ..
<Location path="Admin">
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</ autorización>
</ system.web>
</ Location>
Nota: El fin de permitir que el / negar es importante. Si negar * (todos los usuarios) antes de permitir que la función del administrador, nadie tendrá acceso a la carpeta.
El problema aquí es que aunque sólo obtener papeles cuando el modo de autenticación = "Windows". Por este modo las necesidades de cada usuario de Windows válida una cuenta de usuario en el servidor. No es una buena solución.
Afortunadamente he encontrado un interesante artículo en MSDN. Cuando autenticar su nombre de usuario en el Login.aspx forma, usted debe trabajar con papeles que pertenece el usuario ...
if (author.IsAdministrator)
roles = new String [] ( "Admin", "Miembro");
algo más
roles = new String [] ( "miembro");/ / 1 hora de deslizamiento tiempo de caducidad
Cache.Add (author.UniqueId, funciones, null, DateTime.MaxValue,
TimeSpan.FromHours (1), CacheItemPriority.BelowNormal, null);
He creado una matriz de cadena de la celebración de las funciones que el usuario posee. Estos se almacenan en la aplicación [] recogida por razones de rendimiento, de lo contrario, tendríamos que tener un acceso PP cada vez que quería obtener el usuario actual de funciones.
Ahora, porque las formas de autenticación no tiene ningún concepto de las funciones de estos papeles nunca entrar en la cookie del usuario. Por lo tanto, debemos determinar lo que estos papeles son cada vez una autenticación se ejecuta. Para ello necesitamos entrar en el archivo Global.asax .. .
Application_AuthenticateRequest vacío protegidas (
Objeto remitente, EventArgs e)
(
if (HttpContext.Current.User! = null)
(
if (HttpContext.Current.User.Identity.AuthenticationType! = "Formularios")
arrojar nueva excepción ( "Sólo la autenticación de formularios se apoya, no" +
HttpContext.Current.User.Identity.AuthenticationType);System.Security.Principal.IIdentity idUsuario =
HttpContext.Current.User.Identity;/ / ¿Tenemos algunas funciones para recuperar? Si es así, sustituir el objeto de usuario
if (Aplicación [userId.Name]! = null)
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal (
idUsuario, (string []) Caché [userId.Name]
);
) / / usuario! = null
)
Esta rutina comprueba que el usuario actual! = Null. Esto significa que la página está en un lugar protegido. Si este es el caso, entonces usamos el ID del usuario como la clave para la caché de [] de recogida de encontrar una lista de funciones. Si estos funciones que existen, entonces reasignar el usuario actual con un objeto que creamos nosotros mismos, un objeto que tiene una lista de funciones.
Conclusión
Función de seguridad basada es muy útil en aplicaciones web. Con unas simples líneas de código que es posible llevar a cabo basado en papel de seguridad para los usuarios sin una válida de acceso de Windows.

Delicious
Digg
Google
Yahoo