【问题标题】:Overriding Application_PreRequestHandlerExecute覆盖 Application_PreRequestHandlerExecute
【发布时间】:2016-06-23 10:34:45
【问题描述】:

我继承了一个应用程序,如果会话过期,它使用 Application_PreRequestHandlerExecute 重定向到登录。

目前有一个不应调用重定向的硬编码 url 列表。本质上,这些都是返回json的ajax方法,所以在javascript中分别处理。

我想更改机制,以便默认值(在 Application_PreRequestHandlerExecute 中)保持不变,但替代行为可以由 ActionFilters 在适当的操作(即对应于硬编码的 url 列表的操作)上控制。

如何检查 Application_PreRequestHandlerExecute 中是否存在特定的 ActionFilter?

编辑:也许我需要用全局操作过滤器替换 Application_PreRequestHandlerExecute?

【问题讨论】:

    标签: asp.net-mvc-5 global-asax custom-action-filter


    【解决方案1】:

    简短的回答是用全局动作过滤器替换。

    在其中,filterContext 拥有我需要的一切。

    编辑:这是我所追求的要点:

    public enum SessionExpiredBehaviour
    {
        Redirect,
        Ignore,
        JSON
    }
    
    
    [AttributeUsage(AttributeTargets.Method)]
    public class SessionExpiredFilterAttribute : ActionFilterAttribute
    {
        public SessionExpiredBehaviour Behaviour { get; set; } = SessionExpiredBehaviour.Redirect;
    
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
    
            if (HttpContext.Current.Session["User"] == null)
            {
                switch (this.Behaviour)
                {
    
                    case SessionExpiredBehaviour.Redirect:
                        filterContext.Result =
                            new RedirectToRouteResult(new RouteValueDictionary
                            {
                                { "action", "RedirectToLogin" },
                                { "controller", "Account" }
                            });
                        break;
    
                    case SessionExpiredBehaviour.JSON:
                        //TODO
                        break;
                }
    
            }
            base.OnActionExecuting(filterContext);
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-11
      • 2012-01-28
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 2020-06-06
      • 2011-01-23
      相关资源
      最近更新 更多