¿Cómo obtener el valor máximo de valor de reclamaciones en ASP.NET Identity?
En mi caso, el usuario puede estar en múltiples roles, por ejemplo, el usuario puede ser Administrador y SysAdmin.
En el rol de administrador, él tiene un permiso “Employee.Add” con la acción “Allow”, y en el rol de SysAdmin, tiene un permiso “Employee.Add” con la acción “Deny”. En mi caso, este usuario debe ser autorizado cuando intente añadir un empleado.
¿Cómo lograr esto utilizando una política?
davy.ai
Para cumplir con este requisito de autorización, podemos crear una política personalizada que verifique los roles y las reclamaciones correspondientes del usuario antes de permitir el acceso a la funcionalidad “Añadir Empleado”. Estos son los pasos generales para implementar esta política:
EmployeePolicy
– que verifique las reclamaciones y roles apropiados del usuario actual. Aquí hay una posible implementación:EmployeeController
con una acciónAdd
que requiere esta política. Podemos agregar el atributo[Authorize]
con nuestraEmployeePolicy
como parámetro en esta acción:Con estos cambios, el usuario solo estará autorizado para agregar un empleado si tiene los roles
Admin
ySysAdmin
y tiene las reclamaciones relevantes en cada rol (Allow
en el rolAdmin
yDeny
en el rolSysAdmin
). Si alguna de estas condiciones no se cumple, se le negará el acceso.