我正在使用.net MVC 4构建一个Web应用程序.
我有ajax表单来编辑数据.
如果用户空闲15分钟,它将使用户的会话失效.当这种情况发生时,如果用户单击编辑按钮,它将加载部分内容中的登录页面,现在当前会话过期.
- @Ajax.ActionLink("Edit",MVC.Admin.Material.ActionNames.TagEditorPanel,MVC.Admin.Material.Name,new { isView = "false",id = Model.ID.ToString() },new AjaxOptions { HttpMethod = "GET",UpdateTargetId = "materialTagBox",InsertionMode = InsertionMode.Replace },new { @class = "editlinks" })
控制器/动作代码
- [Authorize]
- public virtual ActionResult TagEditorPanel(bool isView,int id)
- {
- //do something
- return PartialView(MVC.Admin.Material.Views._tag,response);
- }
Web.config文件
- <authentication mode="Forms">
- <forms loginUrl="~/Account/Login" timeout="2880" />
- </authentication>
我明白为什么会发生这种情况.我不知道如何解决它.我想防止它,我想直接将用户重定向到登录页面.我该如何实现?
提前致谢..!!!
也许是一个奇怪的答案,但您可以将表单身份验证中的重定向位置更改为使用javascript将窗口位置设置为登录页面的页面.
Web配置
- <authentication mode="Forms">
- <forms loginUrl="~/Account/RedirectToLogin" timeout="2880" />
- </authentication>
帐号控制器
- public ActionResult RedirectToLogin()
- {
- return PartialView("_RedirectToLogin");
- }
_RedirectToLogin视图
- <script>
- window.location = '@Url.Action("Login","Account")';
- </script>