protected virtual void SetNoCache(ResultExecutingContext context)
 {
     //Based on http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers
     context.HttpContext.Response.Headers["Cache-Control"] = "no-cache, no-store, must-revalidate, max-age=0";
     context.HttpContext.Response.Headers["Pragma"] = "no-cache";
     context.HttpContext.Response.Headers["Expires"] = "0";
 }
        public override void OnResultExecuting(ResultExecutingContext context)
        {
            var result = context.Result;
            if (result is ViewResult)
            {
                if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Type-Options"))
                {
                    context.HttpContext.Response.Headers.Add("X-Content-Type-Options", "nosniff");
                }
                if (!context.HttpContext.Response.Headers.ContainsKey("X-Frame-Options"))
                {
                    context.HttpContext.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
                }

                var csp = "default-src 'self'";
                // once for standards compliant browsers
                if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy"))
                {
                    context.HttpContext.Response.Headers.Add("Content-Security-Policy", csp);
                }
                // and once again for IE
                if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Security-Policy"))
                {
                    context.HttpContext.Response.Headers.Add("X-Content-Security-Policy", csp);
                }
            }
        }
 public void OnResultExecuting(ResultExecutingContext context)
 {
     var headerName = "OnResultExecuting";
     context.HttpContext.Response.Headers.Add(
         headerName, new string[] { "ResultExecutingSuccessfully" });
     _logger.LogInformation($"Header added: {headerName}");
 }
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            // Should only run on a full view rendering result
            if (!(filterContext.Result is ViewResult))
            {
                return;
            }

            // Should only run on the Admin
            if (!AdminAttribute.IsApplied(filterContext.HttpContext))
            {
                return;
            }

            // Populate main nav
            IShape menuShape = _shapeFactory.Create("Menu", 
                Arguments.From(new
                {
                    MenuName = "admin",
                    RouteData = filterContext.RouteData,
                }));

            // Enable shape caching
            menuShape.Metadata
                .Cache("menu-admin")
                .AddContext("user.roles")
                .AddDependency("features")
                .AddDependency("types") // This should go in a Displaying Shape event in the Contents module
                ;

            _layoutAccessor.GetLayout().Navigation.Add(menuShape);
            
        }
        public override void OnResultExecuting(ResultExecutingContext context)
        {
            context.HttpContext.Response.Headers["Cache-Control"] = "no-cache, no-store, max-age=0";
            context.HttpContext.Response.Headers["Pragma"] = "no-cache";
            context.HttpContext.Response.Headers["Expires"] = "-1";

            base.OnResultExecuting(context);
        }
        public override void OnResultExecuting(ResultExecutingContext context)
        {
            var objResult = context.Result as ObjectResult;
            var dummyClass = objResult.Value as DummyClass;
            dummyClass.SampleInt = 120;

            objResult.Formatters.Add(new XmlSerializerOutputFormatter());

            base.OnResultExecuting(context);
        }
 public override void OnResultExecuting(ResultExecutingContext context)
 {
     var controllerActionDescriptor = (ControllerActionDescriptor)context.ActionDescriptor;
     if (controllerActionDescriptor.MethodInfo ==
         typeof(ProductsController).GetMethod(nameof(ProductsController.GetPrice)))
     {
         context.HttpContext.Response.Headers.Append("filters",
             "On Action Result Filter - OnResultExecuting");
     }
 }
        public void Wrap(ResultExecutingContext actionResult)
        {
            var jsonResult = actionResult.Result as JsonResult;
            if (jsonResult == null)
            {
                throw new ArgumentException($"{nameof(actionResult)} should be JsonResult!");
            }

            if (!(jsonResult.Value is AjaxResponseBase))
            {
                jsonResult.Value = new AjaxResponse(jsonResult.Value);
            }
        }
Exemple #9
0
        public void OnResultExecuting(ResultExecutingContext context)
        {
            var controllerActionDescriptor = (ControllerActionDescriptor)context.ActionDescriptor;
            if (controllerActionDescriptor.MethodInfo ==
                typeof(ResultFilterController).GetMethod(nameof(ResultFilterController.GetHelloWorld)))
            {
                context.Result = Helpers.GetContentResult(context.Result, "GlobalResultFilter.OnResultExecuting");
            }

            if (controllerActionDescriptor.MethodInfo ==
                typeof(ProductsController).GetMethod(nameof(ProductsController.GetPrice)))
            {
                context.HttpContext.Response.Headers.Append("filters",
                    "Global Result Filter - OnResultExecuted");
            }
        }
        public void OnResultExecuting(ResultExecutingContext context)
        {
            var methodInfo = context.ActionDescriptor.GetMethodInfo();
            var wrapResultAttribute =
                ReflectionHelper.GetSingleAttributeOfMemberOrDeclaringTypeOrDefault<WrapResultAttribute>(
                    methodInfo,
                    WrapResultAttribute.Default
                );

            if (!wrapResultAttribute.WrapOnSuccess)
            {
                return;
            }

            AbpActionResultWrapperFactory
                .CreateFor(context.Result)
                .Wrap(context.Result);
        }
        /// <inheritdoc />
        public virtual async Task OnResultExecutionAsync(
            ResultExecutingContext context,
            ResultExecutionDelegate next)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (next == null)
            {
                throw new ArgumentNullException(nameof(next));
            }

            OnResultExecuting(context);
            if (!context.Cancel)
            {
                OnResultExecuted(await next());
            }
        }
Exemple #12
0
        public void FormatFilter_ContextContainsFormat_InRouteAndQueryData()
        {
            // If the format is present in both route and query data, the one in route data wins

            // Arrange
            var mediaType = new StringSegment("application/json");
            var mockObjects = new MockObjects("json", FormatSource.RouteData);
            var httpContext = new Mock<HttpContext>();
            httpContext.Setup(c => c.Response).Returns(new Mock<HttpResponse>().Object);

            // Query contains xml
            httpContext.Setup(c => c.Request.Query.ContainsKey("format")).Returns(true);
            httpContext.Setup(c => c.Request.Query["format"]).Returns("xml");

            // Routedata contains json
            var data = new RouteData();
            data.Values.Add("format", "json");

            var ac = new ActionContext(httpContext.Object, data, new ActionDescriptor());

            var resultExecutingContext = new ResultExecutingContext(
                ac,
                new IFilterMetadata[] { },
                new ObjectResult("Hello!"),
                controller: new object());

            var resourceExecutingContext = new ResourceExecutingContext(
                ac,
                new IFilterMetadata[] { });

            var filter = new FormatFilter(mockObjects.OptionsManager);

            // Act
            filter.OnResourceExecuting(resourceExecutingContext);
            filter.OnResultExecuting(resultExecutingContext);

            // Assert
            var objectResult = Assert.IsType<ObjectResult>(resultExecutingContext.Result);
            Assert.Equal(1, objectResult.ContentTypes.Count);
            MediaTypeAssert.Equal(mediaType, objectResult.ContentTypes[0]);
        }
Exemple #13
0
        /// <inheritdoc />
        public async Task OnResultExecutionAsync(
            ResultExecutingContext context,
            ResultExecutionDelegate next)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (next == null)
            {
                throw new ArgumentNullException(nameof(next));
            }

            var controller = context.Controller;
            if (controller == null)
            {
                throw new InvalidOperationException(Resources.FormatPropertyOfTypeCannotBeNull(
                    nameof(context.Controller),
                    nameof(ResultExecutingContext)));
            }

            IAsyncResultFilter asyncResultFilter;
            IResultFilter resultFilter;
            if ((asyncResultFilter = controller as IAsyncResultFilter) != null)
            {
                await asyncResultFilter.OnResultExecutionAsync(context, next);
            }
            else if ((resultFilter = controller as IResultFilter) != null)
            {
                resultFilter.OnResultExecuting(context);
                if (!context.Cancel)
                {
                    resultFilter.OnResultExecuted(await next());
                }
            }
            else
            {
                await next();
            }
        }
        public virtual void OnResultExecuting(ResultExecutingContext context)
        {
            if (_configuration.SetNoCacheForAjaxResponses && context.HttpContext.Request.IsAjaxRequest())
            {
                SetNoCache(context);
            }

            var methodInfo = context.ActionDescriptor.GetMethodInfo();
            var wrapResultAttribute =
                ReflectionHelper.GetSingleAttributeOfMemberOrDeclaringTypeOrDefault(
                    methodInfo,
                    _configuration.DefaultWrapResultAttribute
                );

            if (!wrapResultAttribute.WrapOnSuccess)
            {
                return;
            }

            AbpActionResultWrapperFactory
                .CreateFor(context)
                .Wrap(context);
        }
 public override void OnResultExecuting(ResultExecutingContext context)
 {
     _logger.LogInformation("OnResultExecuting");
     base.OnResultExecuting(context);
 }
 public void Wrap(ResultExecutingContext actionResult)
 {
     actionResult.Result = new ObjectResult(new AjaxResponse());
 }
 public static void AfterOnResultExecuting(
     this DiagnosticSource diagnosticSource,
     ResultExecutingContext resultExecutingContext,
     IResultFilter filter)
 {
     if (diagnosticSource.IsEnabled("Microsoft.AspNetCore.Mvc.AfterOnResultExecuting"))
     {
         diagnosticSource.Write(
             "Microsoft.AspNetCore.Mvc.AfterOnResultExecuting",
             new
             {
                 actionDescriptor = resultExecutingContext.ActionDescriptor,
                 resultExecutingContext = resultExecutingContext,
                 filter = filter
             });
     }
 }
 public override void OnResultExecuting(ResultExecutingContext context)
 {
     _logger.LogWarning("ClassFilter OnResultExecuting");
     base.OnResultExecuting(context);
 }
 public void Wrap(ResultExecutingContext actionResult)
 {
     
 }
 public void OnResultExecuting(ResultExecutingContext context)
 {
     context.HttpContext.Response.Headers.Add(
         "Internal", new string[] { "Header Added" });
 }
Exemple #21
0
        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            if ((filterContext.Result is ViewResult) || _shouldDeleteCookie)
            {
                _httpContextAccessor.HttpContext.Response.Cookies.Delete(CookiePrefix, new CookieOptions { Path = _tenantPath });
            }

            if (!(filterContext.Result is ViewResult))
            {
                return;
            }

            var messageEntries = _existingEntries ?? new List<NotifyEntry>();

            if (messageEntries.Count == 0)
            {
                return;
            }

            var messagesZone = _layoutAccessor.GetLayout().Zones["Messages"];
            foreach (var messageEntry in messageEntries)
            {
                messagesZone = messagesZone.Add(_shapeFactory.Message(messageEntry));
            }
        }
 private static ResultExecutedContext CreateResultExecutedContext(ResultExecutingContext context)
 {
     return new ResultExecutedContext(context, context.Filters, context.Result, context.Controller);
 }
Exemple #23
0
        /// <summary>
        /// Sets a Content Type on an  <see cref="ObjectResult" />  using a format value from the request.
        /// </summary>
        /// <param name="context">The <see cref="ResultExecutingContext"/>.</param>
        public void OnResultExecuting(ResultExecutingContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var format = GetFormat(context);
            if (format == null)
            {
                // no format specified by user, so the filter is muted
                return;
            }

            var objectResult = context.Result as ObjectResult;
            if (objectResult == null)
            {
                return;
            }

            // If the action sets a single content type, then it takes precedence over the user
            // supplied content type based on format mapping.
            if ((objectResult.ContentTypes != null && objectResult.ContentTypes.Count == 1) ||
                !string.IsNullOrEmpty(context.HttpContext.Response.ContentType))
            {
                return;
            }

            var contentType = _options.FormatterMappings.GetMediaTypeMappingForFormat(format);
            objectResult.ContentTypes.Clear();
            objectResult.ContentTypes.Add(contentType);
        }
Exemple #24
0
 private static ResultExecutedContext CreateResultExecutedContext(ResultExecutingContext context)
 {
     return(new ResultExecutedContext(context, context.Filters, context.Result, context.Controller));
 }
        public void OnResultExecuting(ResultExecutingContext context)
        {
            var services = context.HttpContext.RequestServices;
            var disabler = services.GetRequiredService<ITranslatorDisabler>();
            var cache = services.GetRequiredService<ITranslatedCaching>();
            var translator = services.GetRequiredService<ITranslator>();
            var culture = services.GetRequiredService<ICultureProvider>().DetermineCulture();
            if (context.Result is ViewResult)
            {
                var result = (ViewResult)context.Result;
                if (result.Model == null)
                    return;

                if (result.Model is IEnumerable)
                {
                    var model = (IEnumerable<object>)result.Model;
                    foreach (var x in model)
                    {
                        var type = x.GetType();
                        var properties = type.GetProperties().Where(y => y.PropertyType == typeof(string) && y.GetCustomAttribute<LocalizedAttribute>() != null);
                        foreach (var y in properties)
                        {
                            try
                            {
                                var jsonStr = y.GetValue(x);
                                var json = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonStr.ToString());
                                if (json.ContainsKey(culture))
                                    y.SetValue(x, json[culture]);
                                else
                                {
                                    var key = json.Keys.FirstOrDefault();
                                    if (key == null)
                                    {
                                        y.SetValue(x, "");
                                    }
                                    else
                                    {
                                        if (disabler.IsDisabled())
                                            y.SetValue(x, json[key]);
                                        (context.Result as ViewResult).ViewData["__IsTranslated"] = true;
                                        var cachedString = cache.Get(json[key], culture);
                                        if (cachedString == null)
                                        {
                                            var translateTask = translator.TranslateAsync(key, culture, json[key]);
                                            translateTask.Wait();
                                            cache.Set(json[key], culture, translateTask.Result);
                                            y.SetValue(x, translateTask.Result);
                                        }
                                        else
                                        {
                                            y.SetValue(x, cachedString);
                                        }
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.ToString());
                            }
                        }
                    }
                }
                else
                {
                    var type = result.Model.GetType();
                    var properties = type.GetProperties().Where(y => y.PropertyType == typeof(string) && y.GetCustomAttribute<LocalizedAttribute>() != null);
                    foreach (var y in properties)
                    {
                        try
                        {
                            var jsonStr = y.GetValue(result.Model);
                            var json = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonStr.ToString());
                            if (json.ContainsKey(culture))
                                y.SetValue(result.Model, json[culture]);
                            else
                            {
                                var key = json.Keys.FirstOrDefault();
                                if (key == null)
                                {
                                    y.SetValue(result.Model, "");
                                }
                                else
                                {
                                    var cachedString = cache.Get(json[key], culture);
                                    if (cachedString == null)
                                    {
                                        var translateTask = translator.TranslateAsync(key, culture, json[key]);
                                        translateTask.Wait();
                                        cache.Set(json[key], culture, translateTask.Result);
                                        y.SetValue(result.Model, translateTask.Result);
                                    }
                                    else
                                    {
                                        y.SetValue(result.Model, cachedString);
                                    }
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                }
            }
        }
        public static void BeforeOnResultExecution(
            this DiagnosticSource diagnosticSource,
            ResultExecutingContext resultExecutingContext,
            IAsyncResultFilter filter)
        {
            Debug.Assert(diagnosticSource != null);
            Debug.Assert(resultExecutingContext != null);
            Debug.Assert(filter != null);

            if (diagnosticSource.IsEnabled("Microsoft.AspNetCore.Mvc.BeforeOnResultExecution"))
            {
                diagnosticSource.Write(
                    "Microsoft.AspNetCore.Mvc.BeforeOnResultExecution",
                    new
                    {
                        actionDescriptor = resultExecutingContext.ActionDescriptor,
                        resultExecutingContext = resultExecutingContext,
                        filter = filter
                    });
            }
        }
 /// <inheritdoc />
 public virtual void OnResultExecuting(ResultExecutingContext context)
 {
 }
 public override void OnResultExecuting(ResultExecutingContext filterContext)
 {
 }
 /// <inheritdoc />
 public virtual void OnResultExecuting(ResultExecutingContext context)
 {
 }
Exemple #30
0
 public static ControllerActionDescriptor ControllerActionDescriptor(this ResultExecutingContext context) => context.ActionDescriptor.ControllerActionDescriptor();
Exemple #31
0
        public void FormatFilter_ExplicitContentType_SetOnResponse_TakesPrecedence()
        {
            // Arrange
            var mediaType = MediaTypeHeaderValue.Parse("application/foo");
            var mockObjects = new MockObjects("json", FormatSource.QueryData);
            var response = new Mock<HttpResponse>();
            response.Setup(r => r.ContentType).Returns("application/foo");
            var httpContext = new Mock<HttpContext>();
            httpContext.Setup(c => c.Response).Returns(response.Object);
            httpContext.Setup(c => c.Request.Query["format"]).Returns("json");
            var actionContext = new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor());
            var resultExecutingContext = new ResultExecutingContext(
                actionContext,
                new IFilterMetadata[] { },
                new ObjectResult("Hello!"),
                controller: new object());

            var resourceExecutingContext = new ResourceExecutingContext(
                actionContext,
                new IFilterMetadata[] { });

            var filter = new FormatFilter(mockObjects.OptionsManager);

            // Act
            filter.OnResourceExecuting(resourceExecutingContext);
            filter.OnResultExecuting(resultExecutingContext);

            // Assert
            var result = Assert.IsType<ObjectResult>(resultExecutingContext.Result);
            Assert.Equal(0, result.ContentTypes.Count);
        }
 public override void OnResultExecuting(ResultExecutingContext context)
 {
     context.HttpContext.Response.Headers.Add(
         _name, new string[] { _value });
     base.OnResultExecuting(context);
 }
Exemple #33
0
 public override void OnResultExecuting(ResultExecutingContext context)
 {
     throw new InvalidProgramException("Result Filter threw.");
 }