如何在 MVC .Net 中会话超时后重定向?
How to redirect after session timeout in MVC .Net?
我想在 2 分钟不活动后重定向我的页面,为此,我使用以下代码每 2.5 分钟对控制器执行一次 ping 操作,如果会话已过期,我将重定向到原始登录页面:
`<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script language="javascript" type="text/javascript">
var ReqTime =@Session.Timeout
ReqTime = ReqTime * 60 * 1000 + (.5 * 60 * 1000);
$(function () {
setInterval(CheckSession, ReqTime);
});
function CheckSession() {
$.post('@Url.Action("SessionInfo","Home")', null, function () {
console.log("Time");
});
}
</script>
控制器:
public ActionResult SessionInfo()
{
if (Session["LoginUserName"]==null)
{
return RedirectToAction("Index","Home");
}
}
此代码不会重定向到 Home/Index。你能告诉我哪里错了吗?
通过进行这些会话检查 ajax 请求,您只需延长用户会话的生命周期。
如果您想通知浏览器用户会话已结束,我建议实施 SignalR
服务以在服务器和浏览器(实时)之间进行直接通信(推送功能)。
实施 SignalR
服务,
在 global.asax
文件中创建一个 session_end
方法,在 session_end
中向用户浏览器发送一条消息,表明您的会话已结束。
就是这样
尝试使用 Javascript,因为从服务器端重定向需要 post 返回
您可以通过控制器检查会话和 return 一个值以确定会话是否结束
function CheckSession() {
$.ajax({
type: "GET",
url: "@Url.Action("SessionInfo", "Home")"
}).done(function (data) {
if (data === true) {
window.location.href = "@Url.Action("Index", "Home")";
}
}).fail(function (e) {
alert('Error');
});
}
控制器
public JsonResult SessionInfo()
{
if (Session["LoginUserName"] == null)
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
}
这段代码用来解释
我想在 2 分钟不活动后重定向我的页面,为此,我使用以下代码每 2.5 分钟对控制器执行一次 ping 操作,如果会话已过期,我将重定向到原始登录页面:
`<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script language="javascript" type="text/javascript">
var ReqTime =@Session.Timeout
ReqTime = ReqTime * 60 * 1000 + (.5 * 60 * 1000);
$(function () {
setInterval(CheckSession, ReqTime);
});
function CheckSession() {
$.post('@Url.Action("SessionInfo","Home")', null, function () {
console.log("Time");
});
}
</script>
控制器:
public ActionResult SessionInfo()
{
if (Session["LoginUserName"]==null)
{
return RedirectToAction("Index","Home");
}
}
此代码不会重定向到 Home/Index。你能告诉我哪里错了吗?
通过进行这些会话检查 ajax 请求,您只需延长用户会话的生命周期。
如果您想通知浏览器用户会话已结束,我建议实施 SignalR
服务以在服务器和浏览器(实时)之间进行直接通信(推送功能)。
实施 SignalR
服务,
在 global.asax
文件中创建一个 session_end
方法,在 session_end
中向用户浏览器发送一条消息,表明您的会话已结束。
就是这样
尝试使用 Javascript,因为从服务器端重定向需要 post 返回
您可以通过控制器检查会话和 return 一个值以确定会话是否结束
function CheckSession() {
$.ajax({
type: "GET",
url: "@Url.Action("SessionInfo", "Home")"
}).done(function (data) {
if (data === true) {
window.location.href = "@Url.Action("Index", "Home")";
}
}).fail(function (e) {
alert('Error');
});
}
控制器
public JsonResult SessionInfo()
{
if (Session["LoginUserName"] == null)
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
}
这段代码用来解释