2013-04-16 64 views
0

即使函數註銷尚未執行,我仍然有一個問題,即用戶始終註銷。看起來這是由於代碼在C#是(這是剃刀頁面佈局mvc4)無論JavaScript函數被調用都會執行c#代碼

<script type="text/javascript"> 
    var idleTimer = 0; 
    function notIdle() 
    { 
     clearTimeout(idleTimer);  
     idleTimer = setTimeout(function() { logout() }, 5000); 
    } 

    function logout()   
    { 
     @if (Request.IsAuthenticated) 
     { 
      WebSecurity.Logout();     
     } 
     window.location.reload(); 
     clearTimeout(idleTimer); 

    }   
</script> 
+1

呀,C#代碼將在服務器上運行當頁面加載時。如果你想從JavaScript調用服務器端的方法,你將不得不做一個AJAX調用或其他東西。 –

回答

0

你的C#代碼將被加載頁面時,運行瑞安提及。我可以建議做一個控制器方法Logout,把你的代碼放在那裏,並在你的腳本logout()函數中重定向到那個方法。該代碼會是這樣:
HTML

<button onclick="logout()">Logout</button> 

的Javascript

//I don't really know your logic behind those timeouts, so I leave them as is 
    var idleTimer = 0; 
    function notIdle() 
    { 
     clearTimeout(idleTimer);  
     idleTimer = setTimeout(function() { logout() }, 5000); 
    } 

    function logout()   
    { 
     location.href = "Home/Logout"; 
     //"Home" is the name of your controller, where you will put the Logout method. 
    } 

C#

public ActionResult Logout() 
{ 
    if (Request.IsAuthenticated) 
    { 
     WebSecurity.Logout(); 
    } 
    return RedirectToAction("Index", "Home"); //redirect to your previous page 
} 
+0

不是我在找什麼,因爲這段代碼只是在用戶閒置時註銷。我意識到我可以檢查aspxAuth cookie是否存在以檢查用戶是否已通過身份驗證。 – zms6445

相關問題