Estoy realizando tareas de mantenimiento en una aplicación de formularios web ASP.net de 10 años. Tiene una capa empresarial que tiene sus métodos protegidos por System.Security.Permissions.PrincipalPermissionAttribute
, como este:
[PrincipalPermission(SecurityAction.Demand, Authenticated = true, Role = "2,3", Unrestricted = true)]
public void Foo(int bar)
Se utiliza una identidad y un principio de IP personalizados. El principal personalizado implementa bool IsInRole(string role)
e interpreta el parámetro de rol como una lista de roles separados por comas para verificar.
Supongo que una vez todo funcionó bien, pero, actualmente, el método IsInRole
nunca se llama.
Por supuesto, mi atención se dirigió hacia la propiedad sin restricciones . La documentación de MSDN no aclara mucho . Acabo de intentar con unrestricted = false
y he aquí que, la validación saltó a la vida.
Hasta donde puedo rastrear el código, el parámetro sin restricciones siempre se ha pasado como verdadero. Por lo tanto, estoy dudando de simplemente cambiar esto a falso en todas partes.
¿Esta propiedad realmente tiene el efecto de decir:
"Oye, estoy declarando permisos aquí, pero en realidad, no importa y sigue adelante".
¿O es algo más sutil?