动作过滤器:重定向到注销并发送错误消息

时间:2013-05-20 19:49:15

标签: asp.net-mvc-4 action-filter

我是MVC的新手,我需要这样做:

  1. 一个人在一个地方登录应用程序(PC 1)
  2. 转到另一台PC并再次登录(无需从PC 1登录)
  3. 有人尝试使用PC 1
  4. PC 1注销
  5. 错误页面上写着“因为......已经记录了你”
  6. 直到4我好,但我的动作过滤器上有下一个代码:

                        filterContext.HttpContext.Items["errorMsg"] = Resources.Account.Res_String.SessionDuplica; //error msg and flag                       
                        filterContext.Result = new RedirectToRouteResult(
                        new RouteValueDictionary(new
                                                {
                                                     controller = "Account",
                                                     action = "LogOff"                                                    
                                                }));
    

    然后在AccountController上 - > LogOff我有这个:

            FormsAuthentication.SignOut();
    
    
            if (HttpContext.Items["errorMsg"] == null)//normal logOff?
            {
                return RedirectToAction("LogOn", "Account");
            }
            else//induced logOff
            {
                ViewBag.error = HttpContext.Items["errorMsg"];
                return View();//LogOff view
            }
    

    但是如果(HttpContext.Items [“errorMsg”] == null =总是如此

    知道为什么?或另一种方法吗?

    我只需要将动作过滤器中的字符串发送到重定向的方法

1 个答案:

答案 0 :(得分:0)

  

获取可用于组织和共享的键/值集合   IHttpModule接口和IHttpHandler接口之间的数据   在HTTP请求期间。

项目仅适用于单个请求,您需要一个会话变量来解决此案例。