Использование Javascript setTimeout для вызова действия MVC для поддержания проверки подлинности форм - PullRequest
2 голосов
/ 09 июня 2011

Я использую setTimeout для вызова действия MVC, чтобы попытаться сохранить работоспособность аутентификации форм пользователей.

Когда я вызываю этот код нормально (т.е. не использую setTimeout), он поддерживает аутентификацию форм.

При вызове внутри setTimeout это не так.

Мой вопрос: почему это не работает при вызове через setTimeout?

$(document).ready(function() {

    DoKeepAlive();    //simple test when page loads....does keep forms auth alive
});


var timeout= 0;
timeout= setTimeout(validationPrompt, 2 * 60 * 1000);  

function validationPrompt() {

    var answer = confirm("Your session will timeout in less than a minute. Click OK to stay logged in, and reset the timout period.")
    if (answer) {

        DoKeepAlive();     //when called in here by setTimeout, does NOT keep forms auth alive

        //re-set the 10 minutes count
        clearTimeout(timeout);
        timeout= setTimeout(validationPrompt, 2 * 60 * 1000); 
    }
    else {
        var URL = "<%= Url.Content("~/Account/Logoff") %>"
        window.location = URL;
    }
}

function DoKeepAlive(){

        var URL = "<%= Url.Content("~/Account/ValidateAuthentication") %>"
    $.post(
            //"../../Account/ValidateAuthentication",      
            URL,
            function(data) {

            }
        );

}

Ответы [ 3 ]

1 голос
/ 13 июня 2011

попробуйте положить timeout= setTimeout(validationPrompt, 2 * 60 * 1000); внутрь $(document).ready?

1 голос
/ 14 июня 2011

После большого вспенивания я обнаружил, что время на сервере, которое я использовал, было 3 минуты медленным. Мне помог пост на эту тему .

1 голос
/ 10 июня 2011

Трудно сказать, почему ваш код не работает. Я хотел бы сначала упростить это:

<script type="text/javascript">
    window.setInterval(function () {
        var answer = confirm("Your session will timeout in less than a minute. Click OK to stay logged in, and reset the timout period.");
        if (answer) {
            $.post('<%= Url.Action("ValidateAuthentication", "Account") %>');
        } else {
            window.location.href = '<%= Url.Action("Logoff", "Account") %>';
        }
    }, 2 * 60 * 1000);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...