Member 12235276 Ответов: 2

Как Заставить Пользователя Выйти Из Системы После Окончания Таймера?


я разрабатываю экзаменационное веб-приложение с использованием C# & ASP.NET.. у меня есть разные комнаты, и в каждой комнате пользователь войдет в систему, сдаст экзамен, а затем выйдет из системы и перейдет в следующую комнату продолжительность сдачи экзамена составляет 7 минут для каждой комнаты ...

мне нужно заставить пользователя выйти из системы или просто автоматически выйти из системы через 7 минут и сделать редирект на страницу входа, чтобы я гарантировал, что у следующего пользователя будет новый экзамен сессии ..

Я пытался найти возможный способ сделать это, но я могу найти только что-то вроде того, чтобы заставить пользователя выйти из системы, если он простаивает, или использовать FormsAuthentication.Метод SignOut (), но я не уверен, как это сделать..

Спасибо,

Sergey Alexandrovich Kryukov

Плохая идея. Вместо этого просто перестаньте считать зарезервированное время для ответа. Но позвольте мне сказать вам: такие экзамены-это один из факторов, который превратил образование в полный мусор.
—СА

Sinisa Hajnal

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

Вместо этого остановите счетчик, отключите/закройте комнату и укажите пользователю на следующую. Почему это должна быть новая сессия? И даже если это так (то есть вы закрываете старый сеанс), вы можете снова автоматически войти в систему пользователя.

Вы должны переосмыслить / перепроектировать систему.

2 Ответов

Рейтинг:
1

Khaleel Mahalthy

Попробуйте этот код...


<script language="javascript" type="text/javascript">
    //Session timeout in minute.
    var sessionTimeout = "<%= Session.Timeout %>";

    //Session timeout warning before 2 minute.
    var sessionTimeoutWarning = parseInt(sessionTimeout) - 2;

    //Session timeout in millisecond.
    var sTimeout = parseInt(sessionTimeout) * 60 * 1000;

    //setTimeout('SessionWarning()', sTimeout);

    setTimeout(' Redirect()', sTimeout);
    function SessionWarning() {
        //Calculating minutes before timeout in millisecond.
        var minutesForExpiry = (parseInt(sessionTimeout) - parseInt(sessionTimeoutWarning));

        var message = "Your session will expire in another " + minutesForExpiry + " mins! Please refresh the page before the session expires";
        alert(message);

        setTimeout('Redirect()', (minutesForExpiry * 1000 * 60));

    }

    function Redirect() {
        var msg = "Session expired. You will be redirected to login page";
        alert(msg);
        window.location = "LoginPage.aspx";
    }
    
</script>


Рейтинг:
0

Member 14014354

Я нашел классный способ выхода пользователя из системы после истечения срока действия сеанса, надеюсь, это поможет.

Test time = 1min


В файле webconfig установите время ожидания sessionState на нужное время в минутах

<system.web>
    ...
    ...
    <sessionState timeout="1" />
  </system.web>


Используя мастер-страницы, поместите этот мета-тег в раздел head. Время идет в секундах

<meta http-equiv="refresh" content="60; ">


В событии Page_Load главной страницы вставьте

If Session("UserName") Is Nothing Then
        Response.Redirect("~/Login.aspx")
    End If