Asp.net: Реализация функциональности Автовыхода из системы

Это известная ошибка в плагине Open Distro Security: https://github.com/opendistro-for-elasticsearch/security-kibana-plugin/issues/1 .

7
задан renegadeMind 2 April 2009 в 13:58
поделиться

4 ответа

Это было достигнуто следующим образом:

1) Экономия времени- отметка каждого запроса (сервер и ajax, за исключением запроса ajax проверки сеанса) к серверу в переменную сеанса.

2) Опрашивайте сервер через функцию JS, используя ajax через частые промежутки времени, и проверяйте, есть ли разница во времени между временем сеанса -stamp и время запроса ajax больше, чем время ожидания сеанса val, затем выйдет из системы текущего пользователя и вернет bool для этого запроса ajax.

3) Перенаправить текущую страницу на страницу входа в систему, если возвращенное bool истинно.

6
ответ дан 6 December 2019 в 07:29
поделиться

Идя на комментарии так же как вопрос, я не уверен, ли Вы после чего-то, что зарегистрирует пользователя после определенного времени независимо от действия, или сразу после периода неактивности.

Если Вы рады использовать стандартные механизмы ASP.NET, это может быть сделано для Вас без любой основной работы:

Настройте своего поставщика членства.

Удостоверьтесь, что Ваш раздел аутентификации определяет loginUrl:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" />
</authentication>

Можно установить тайм-аут кроме значения по умолчанию 30 минут с помощью атрибута "тайм-аута" на элементе форм:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" timeout="15"/>
</authentication>

Это зарегистрирует пользователя после 15 минут неактивности на Вашем сайте (или с браузером, открытым без JavaScript "heartbeat" или если они проводят 15 минут на другой сайт).

Запретите доступа анонимным пользователям

<authorization>
  <deny users="?" />
</authorization>

Затем удостоверьтесь, что Ваш вход в систему, регистрация и возможно страницы забытого пароля доступны для всех пользователей, использующих Элемент местоположения:

<location path="Logon.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<location path="Register.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<!-- etc -->

Таким образом, когда cookie аутентификации пользователя истечет, они будут перенаправлены к URL, указанному в loginUrl элементе Вашей страницы форм.


Если бы Вы не используете стандартные механизмы ASP.NET, то Вы, вероятно, были бы более обеспеченной реализацией модели типа "базовой страницы".

Создайте новый класс, который наследовался Системе. Сеть. UI.Page, который проверит состояние входа в систему пользователя, и если они не зарегистрированы в/синхронизированный затем, перенаправляет их к Вашей странице входа в систему.

В Вас страницы, которые должны быть заблокированы вниз, вместо того, чтобы наследоваться Системе. Сеть. UI.Page, Вы наследовались своему классу базовой страницы (пример этого вида установки, чтобы сделать что-то подобное - установка проверки на каждой странице) видны в моем ответе здесь


Ваша страница входа в систему должна будет, вероятно, иметь некоторый кадр, арестовывающий JS в ней для перехода назад из iFrame:

if (top!=self.parent){
  top.location=self.parent.location;
}

Или Вы говорите, что путем оттеснения они могут все еще видеть страницы через кэш браузеров? В этом случае необходимо будет играть вокруг с заголовками Кэша на каждой странице:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Хорошо, ну, в общем, в этом случае Вам также будет нужен объект - таймер JS выполнить Местоположение. Замена к Вашей странице входа в систему - имеет это в пользовательском элементе управления на каждой странице (или еще лучше на Вашей основной странице) для автоматического перенаправления пользователя после n минуты:

<script type="text/javascript">
  setTimeout('location.Replace("/login.aspx")', 900000);
</script>

Время находится в миллисекундах, таким образом, это углубит их через 15 минут и никакую потребность получить целую платформу jQuery на месте только для этого.

Вы могли бы также хотеть изучить тег обновления meta:

<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />

Который вынудит браузер обновиться к странице входа в систему после 15 минут (это в секундах).

17
ответ дан 6 December 2019 в 07:29
поделиться

Так как Вы не знаете, где запустить, можно найти это 4guys статья полезный: http://www.4guysfromrolla.com/webtech/110701-1.shtml

Править

Кажется, что таймер jQuery может быть полезным, если Вы хотите перенаправить к URL после того, как известный промежуток времени протек (т.е. Ваш период истечения сессии).

Надеюсь, это поможет.

0
ответ дан 6 December 2019 в 07:29
поделиться

Прочитайте документацию MSDN по http://msdn.microsoft.com/en-us/library/ms972429.aspx

1
ответ дан 6 December 2019 в 07:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: