Я использую аутентификацию на основе политик для предоставления доступа на основе прав в меню для авторизованного пользователя. Если в меню есть доступ, я звоню context.Succeed(requirement);
, но в случае ошибки (несанкционированный доступ к меню) я хочу перенаправить его на домашнюю страницу. Как я могу достичь этого в filterContext.Result
?
Вот мой код:
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, PermissionRequirement requirement) {
var filterContext = context.Resource as AuthorizationFilterContext;
var sessionObj = SessionManager.GetObjectFromJson<AuthenticateUserInfo>(filterContext.HttpContext.Session, "oLoginModel");
if (context.User == null)
{
// no user authorizedd. Alternatively call context.Fail() to ensure a failure
// as another handler for this requirement may succeed
context.Fail();
//filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Login", action = "LogOn" }));
return Task.CompletedTask;
}
//var obj = context.Requirements.
bool hasPermission = sessionObj == null ? false : sessionObj.Menus.Any(m => m.ControllerName == requirement.ControllerName); //.Any(= requirement.ControllerName);
if (hasPermission)
{
context.Succeed(requirement);
}
else
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Home", action = "Index", area = "" }));
}
return Task.CompletedTask;
}
Я имею в виду Ссылка перенаправления из атрибута фильтра действий , но она предназначена для ASP.NET MVC, и я уже реализован в MVC, но не работаю в MVC Core.