我有一个会话过期方法,可以在用户从cookie中倒数20分钟后注销用户。它可以正常工作,因为用户成功注销。唯一的问题是后出现的URL为会话到期URL错误
本地主机:8091 /登录RETURNURL =%2FLogin%2FLogOut
当它不应该有后/登录任何东西。我正在使用C#和ASP.NET 4与MVC的。
这是JS用来将用户重定向...
function startCountdown(timeLeft) {
if (countDownInterval > 0) return;
$('#idletimeoutcount').text(countDown);
$('#idletimeout').slideDown();
countDown = parseInt(timeLeft/1000);
countDownInterval = setInterval(function() {
$('#idletimeoutcount').text(countDown);
var secondsLeft = countDown--;
document.title = "Warning! " + secondsLeft + " seconds left until logged out";
if (countDown <= 0) {
// console.log('finished');
window.location.href = '/Login/LogOut';
}
}, 1000);
}
而注销功能:
public ActionResult LogOut()
{
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Login");
}
有没有什么办法让它如此的网址为localhost:8091 /登录 ? (HTTP取出,因为堆栈溢出)
它可能是与包含这些标签的web配置:
<authentication mode="Forms">
<forms name="SqlAuthCookie" loginUrl="Login" timeout="20" slidingExpiration="true" />
</authentication>
当新用户点击本地主机时会发生什么:8091/Login?它会自动添加ReturnUrl吗? –
奇怪的是,如果我运行window.location.href ='/ Login/LogOut';在Chrome的控制台上,它出现了localhost:8091/Login。但是当我等待超时20分钟时,它会以localhost:8091/Login?ReturnUrl =%2FLogin%2FLogOut的形式出现。无论哪种方式,您都会返回到登录页面,但如果此网址出现,并且您尝试重新登录,则必须单击登录两次,因为在首次单击后,网址会返回到/登录。 –
不知道这是否有帮助,但你可以尝试改变: loginUrl =“登录” 到 loginUrl =“/登录” –