Proteger carpetas, accesso solo para administradores con web.config

Si trabajamos con un sitio dinamicon en ASP.NET normalmente existe una interfaz de administracion donde se pueden hacer cambios en el sitio.

Esta interfaz tiene que estar siempre protregida para que solo los usuarios que deban actualizar el sitio o los administradores del sitio puedan acceder a ella y no se debe permitir acceso como usuario anonimo o como cualquier otro tipo de usuario.

En ASP.NET existen los llamados Roles, que permiten clasificar los tipos de usuario, lo ideal seria crear al menos 2 tipos de usuario, un tipo “user” y un tipo “admin” (se pueden poner cualquier nombre pero a modo de ejemplo es mas explicativo asi).

Una vez que tenemos los roles creados y funcionando para proteger una carperta y solo dar acceso al Rol de “admin” lo unico que necesitamos hacer es crear un archivo web.config y agregar las lineas de codigo que tenemos abajo:

<?xml version=”1.0″ encoding=”utf-8″?>
<configuration>
<system.web>
<authorization>
<allow roles=”admin” />
<deny users=”*” />
</authorization>
</system.web>
</configuration>

No hace falta agregar nada mas, con esto es suficiente, si, es un web.config bastante pequeño y sencillo.

Si no se desea crear roles y solo se quiere dar acceso a ciertos usuarios, tambien se puede hacer, la unica diferencia seria que en vez de permitir el acceso a un Rol se permitira el acceso a un usuario, en vez de utilizar “allow roles” se utilizara “allow users” y se pondra el nombre del user que se desee dar acceso, la segunda linea queda igual simplemente deniega el acceso a todos los demas usuarios con deny users=”*”  donde “*” significa todos,  Ejemplo:

<?xml version=”1.0″ encoding=”utf-8″?>
<configuration>
<system.web>
<authorization>
<allow users=”george” />
<deny users=”*” />
</authorization>
</system.web>
</configuration>

Otra cosa que podemos hacer con este codigo es proteger una carpeta de usuarios anonimos (no autenticados), para esto podemos utilizar <deny users=”?” /> lo que significa eso, denegar acceso a todos los usuarios anonimos.