【问题标题】:Asp.net Mvc RedirectToAction not redirecting within account controllerAsp.net Mvc RedirectToAction 不在帐户控制器内重定向
【发布时间】:2018-06-30 09:33:39
【问题描述】:

在我的 Global.asax 文件中,我有一个事件 Session_OnEnd 在会话超时到期时触发。下面是 Global.asax 中的代码

protected void Session_OnEnd(object sender, EventArgs e)
{
        Controllers.AccountController obj = new 
             Controllers.AccountController();
        obj.RedirectoLogin();
}

帐户控制器中的代码

 internal void RedirectoLogin()
 {
        ViewBag.Message = "Session Expired";
        RedirectToAction("Login", "Account");
 }

 [AllowAnonymous]
 public ActionResult Login(string returnUrl)
 {
   ViewBag.ReturnUrl = returnUrl;
   return View();
 }

方法被调用。但不会重定向到登录页面。

【问题讨论】:

  • 您真的不需要这样做。如果会话已经结束并且用户不再被授权,他们对安全项目的下一个请求应该自动将他们重定向到指定的登录页面。

标签: c# asp.net-mvc asp.net-mvc-4 redirecttoaction


【解决方案1】:

Session_OnEnd() 方法在服务器端的 ASP.Net 框架内调用。由于 HTTP 是无状态的,服务器无法强制用户重定向到新页面(连接可能长时间关闭)。

此方法旨在执行一些清理工作(例如删除在线用户的数据库记录)。

根据@DavidG 的评论,如果您想重定向用户,在下一个请求(当浏览器发送 - 现已过期 - 会话 cookie 时)时,用户将被重定向到登录页面。

如果您的 Web 应用程序严重依赖客户端逻辑,则与服务器上的会话持续时间相匹配的客户端计时器可以在会话过期后触发重定向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多