我有一個會話過期方法,可以在用戶從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 =「/登錄」 –