/// <summary> /// Запечатан. Для определения дополнительной логики авторизации следует воспользоваться атрибутом <see cref="AuthorizeAttribute"/>. /// </summary> protected override void OnAuthorization(AuthorizationContext filterContext) { var isAllowed = true; var moduleActionAttribute = (filterContext?.ActionDescriptor as ReflectedActionDescriptor)?.MethodInfo?.GetCustomAttributes <ModuleActionAttribute>(true).FirstOrDefault(); if (moduleActionAttribute != null && moduleActionAttribute.Permission != Guid.Empty) { isAllowed = ModuleBase.CheckPermission(ModuleBase.GetAppCore().GetUserContextManager().GetCurrentUserContext(), moduleActionAttribute.Permission) == CheckPermissionVariant.Allowed; } if (!isAllowed) { var moduleAuth = AppCore.Get <OnXap.Modules.Auth.ModuleAuth>(); moduleAuth.RememberUserContextRequestedAddressWhenRedirectedToAuthorization(filterContext.RequestContext.HttpContext.Request.Url); filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", moduleAuth.UrlName }, { "action", "unauthorized" }, // todo заменить unauthorized на ссылку на метод. Но как, если возвращаемый результат ActionResult известен только при привязке к asp.net mvc/core? { "area", AreaConstants.User } }); } }