¿Es posible modificar dinámicamente los permisos de roles y también generar los mapas de sitio/menús apropiados en ASP.NET?
security menu (1)
Estoy investigando sobre seguridad y mapas de sitio en ASP.net y, desafortunadamente, me estoy quedando sin tiempo. No he trabajado demasiado con la seguridad de ASP.net, así que no estoy completamente seguro de si voy en la dirección correcta.
Aquí está mi problema:
Tengo un sitio web público (es decir, en Internet) que permitirá que cualquier usuario se registre. El sitio web se desarrollará utilizando formularios web ASP.net. Estos usuarios pueden crear otros usuarios y asignarles a estos usuarios roles diferentes.
Los diferentes roles tienen diferentes restricciones y el menú se muestra de forma adecuada. Por ejemplo, un usuario que actúa como administrador puede ver todas las opciones del menú. Mientras que un usuario limitado solo verá algunos de estos elementos del menú.
Es necesario que los usuarios de nuestro lado puedan modificar las páginas a las que pueden acceder determinados roles. Por ejemplo, si Role1 puede hacer la tarea X, nos gustaría poder en algún momento modificar Role1 para no hacer más la tarea X. Esto se haría usando una aplicación construida internamente.
Los tipos de usuario (roles) deben guardarse en la base de datos. Los permisos de usuario (a qué páginas puede acceder cada tipo) también se guardan guardados en la base de datos.
Aquí hay algo que estoy pensando hacer:
- Implementar la configuración de autorización y autenticación integrada en ASP.net utilizando el archivo web.config
- Use Sitemaps para crear menús / migas de pan de la base de datos de forma dinámica
Creo que es posible hacer el segundo usando proveedores personalizados (corríjanme si me equivoco). Pero no estoy del todo seguro de si es posible configurar el archivo web.config de forma dinámica.
Supongo que esto realmente es más una respuesta sí / no, pero me gustaría asegurarme de no ir en la dirección equivocada. Usaré el framework VS2008 y .net 3.5.
Muchas gracias.
Sí, es posible hacer lo que dices. Puede crear dinámicamente los sitemaps utilizando un SiteMapProvider personalizado, consulte este artículo http://www.codeproject.com/KB/aspnet/dynamicsitemap.aspx .
También puede modificar web.config en tiempo de ejecución utilizando un XmlReader o, si lo prefiere, simplemente leerlo en una cadena y analizar el elemento de autorización. Sin embargo, lo pondría en un archivo separado, usando configSource:
<authorization configSource = "auth.config" />
Entonces solo necesitas modificar ese archivo y no preocuparte por arruinar la web.config