【发布时间】:2014-04-17 20:11:55
【问题描述】:
我将尝试尽可能地解释这一点。所以,这是我的问题。
我有一个控制器,它有两个动作(我们将使用 Index 动作调用这个 Controller1)一个使用 HttpGet 属性,另一个使用 HttpPost 属性,并且都使用 Authorize 属性来确保某人通过了身份验证。
Controller1.Index 视图使用一个局部视图,它调用一个名为 _Commands 的视图(也在 Controller1 控制器上)。这个局部视图在控制器中也有与之关联的 Authorize 属性。
如果用户未获得授权,他们将被强制使用登录控制器 (LoginController),该控制器具有与之关联的 Get 和 Post 属性(索引操作)。
Controller1.Index 通过名为 GetRecord 的操作调用局部视图。如果记录存在,它会呈现 Partial(返回 PartialView),如果不存在,它几乎只会呈现一个空白 DIV。这一切都是通过使用 POST ajax 调用的 Jquery .ajax 调用完成的。
但是,问题是当用户长时间坐在页面上并且他们的会话过期时,他执行了一个 jquery 事件(比如更改触发 ajax 调用以更新部分的下拉菜单), partial 使用 Login.Index 视图呈现(并调用 LoginController.Index GET 操作),_Command partial 应该在哪里。
现在我的问题是,如何强制登录屏幕“退出”任何部分调用,然后重新加载为首页?
我尝试了一些不起作用的方法。例如,我在登录 GET 中尝试了 Request.IsAjaxRequest,但没有任何效果。我也试过 IsChildAction,没有效果。两者都返回 FALSE。
还有其他人知道我可以如何解决这个问题吗?
【问题讨论】:
-
数十个 SO 问题的可能重复项,可在 Google 上搜索为“asp.net 捕获未经授权的 ajax 请求”。
标签: c# asp.net-mvc asp.net-mvc-4 partial-views