Если вы собираетесь использовать это во многих взглядов, то вы бы лучше реализовать пользовательские RazorPage:
public abstract class MyRazorPage<T> : RazorPage<T>
{
public async Task<bool> HasPolicyAsync(string policyName)
{
var authorizationService = Context.RequestServices.GetService(typeof(IAuthorizationService)) as IAuthorizationService;
bool isAdmin = (await authorizationService.AuthorizeAsync(User, policyName)).Succeeded;
return isAdmin;
}
}
затем откройте _ViewImports.cshtml и добавьте следующую инструкцию:
@inherits MyRazorPage<TModel>
теперь вы можете кал л HasPolicyAsync() метод из любой точки зрения:
if (await HasPolicyAsync(Policies.RequireAdmin))
{
<h2>Admin is authorized</h2>
}
Это будет выглядеть намного более кратким.
Это просто здорово. : D Для следующего, кто ищет это, вам нужно '@ использование Microsoft.AspNetCore.Authorization' и' @inject IAuthorizationService AuthorizationService', а также –
@Thomas Спасибо за то, что вы поместили в это ответ предложение ..., MS забыл, что важный бит информации в своих документах. – JReam
@JReam хе-хе, я просто хотел, чтобы люди поставили вопрос вместо комментария: P –