vistas vista validaciones parciales paginas mvc asp.net authentication asp.net-membership forms-authentication authorization

asp.net - validaciones - vista parciales



¿Por qué se incluye<deny users="?"/> En el siguiente ejemplo? (4)

El ? comodín representa usuarios no autenticados, mientras que * representa a todos los usuarios, autenticados y no autenticados. Mi libro muestra el siguiente ejemplo de autorización de URL:

<authorization> <deny users="?" /> <allow users="dan,matthew" /> <deny users="*" /> </authorization>


Pero el código anterior no tiene el mismo efecto que:

<authorization> <allow users="dan,matthew" /> <deny users="*" /> </authorization>

o el autor también incluyó <deny users="?" /> <deny users="?" /> regla por una razón?


"En tiempo de ejecución, el módulo de autorización itera a través de los elementos de permitir y denegar, comenzando en el archivo de configuración más local, hasta que el módulo de autorización encuentre la primera regla de acceso que se ajuste a una cuenta de usuario particular. Luego, el módulo de autorización otorga o deniega el acceso a un recurso URL dependiendo de si la primera regla de acceso encontrada es una regla de permitir o denegar. La regla de autorización predeterminada es. Por lo tanto, de forma predeterminada, se permite el acceso a menos que se configure de otra manera ".

Artículo en MSDN

deny = * means deny everyone deny = ? means deny unauthenticated users

En su primer ejemplo, deny * no afectará a dan, matthew dado que ya estaban permitidos por la regla anterior.

De acuerdo con los documentos, aquí no hay diferencia en sus 2 conjuntos de reglas.


ASP.NET concede acceso desde el archivo de configuración como una cuestión de precedencia. En caso de un conflicto potencial, la primera concesión que ocurre tiene prioridad. Asi que,

deny user="?"

niega el acceso al usuario anónimo. Entonces

allow users="dan,matthew"

otorga acceso a ese usuario. Finalmente, niega el acceso a todos. Esto se suaviza ya que todos, excepto Dan, matthew se les niega el acceso.

Editado para agregar: y como @Deviant señala, negar el acceso a no autenticado no tiene sentido, ya que la última entrada también incluye no autenticada. Una buena entrada de blog sobre este tema se puede encontrar en: Blog de Guru Sarkar


El ejemplo 1 es para aplicaciones asp.net que usan autenticación de formularios. Esta es una práctica común para las aplicaciones de Internet porque el usuario no está autenticado hasta que se autentique contra algún módulo de seguridad.

El ejemplo 2 es para la aplicación asp.net que usa la autenticación de Windows. La Autenticación de Windows usa Active Directory para autenticar usuarios. El impedirá el acceso a su aplicación. Uso esta característica en aplicaciones de intranet.