Verificare this page nella documentazione di ASP.NET Core. È in qualche modo simile a ciò che cancan fa.
È scrivere un gestore di autorizzazione in questo 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;
}
}
Ora è possibile utilizzare il seguente codice nel vostro controller:
if (await authorizationService.AuthorizeAsync(User, document, Operations.Read))
{
return View(document);
}
else
{
return new ChallengeResult();
}
o in vostro punto di 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>
}
fonte
2017-01-13 18:31:58
avete fatto mai trovare una buona implementazione dell'autorizzazione basata sulle attività? – GraemeMiller
no, sfortunatamente non l'ho fatto. Ho finito per scrivere un attributo Autorizza personalizzato. Fammi sapere se trovi una buona implementazione di esso. – Karan