2013-04-16 1 views
0

기능 로그 아웃이 실행되지 않은 경우에도 사용자가 항상 로그 아웃되는 문제가 있습니다. 이 페이지가로드 될 때 라이언 언급 한 바와 같이호출중인 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# 코드는 서버에서 실행하려고에게
HTML : 코드는 다음과 같을 것 페이지가로드 될 때 자바 스크립트에서 서버 측 메소드를 호출하려면 AJAX 호출 또는 다른 것을 작성해야합니다. –

답변

0

귀하의 C# 코드가 실행됩니다 (이 면도칼 레이아웃 페이지 mvc4에) C#에서 인 코드로 인한 것 같다. 컨트롤러 메소드 Logout을 작성하고 거기에 코드를 입력하고 스크립트에 logout() 함수가 해당 메소드로 리디렉션되도록 제안 할 수 있습니다.

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

자바 스크립트

//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 쿠키가 있는지 확인하여 사용자가 인증되었는지 확인할 수 있다는 것을 깨달았습니다. – zms6445