Salida this page en la documentación de ASP.NET Core. Es algo similar a lo que Cancan hace.
Usted escribir un controlador de autorización de este modo:
public class DocumentAuthorizationHandler :
AuthorizationHandler<OperationAuthorizationRequirement, Document>
{
public override Task HandleRequirementAsync(AuthorizationHandlerContext context,
OperationAuthorizationRequirement requirement,
Document resource)
{
// Validate the operation using the resource, the identity and
// the Name property value from the requirement.
return Task.CompletedTask;
}
}
Ahora puede utilizar el siguiente código en los controladores:
if (await authorizationService.AuthorizeAsync(User, document, Operations.Read))
{
return View(document);
}
else
{
return new ChallengeResult();
}
o en sus puntos de vista:
@if (await AuthorizationService.AuthorizeAsync(User, Model, Operations.Edit))
{
<p><a class="btn btn-default" role="button"
href="@Url.Action("Edit", "Document", new { id = Model.Id })">Edit</a></p>
}
¿Te ha ¿Alguna vez encontró una buena implementación de autorización basada en actividades? – GraemeMiller
no, desafortunadamente no lo hice. Terminé escribiendo un atributo Autorizar personalizado. Avíseme si encuentra una buena implementación de la misma. – Karan