Я создаю аутентификацию форм в MVC, используя
'FormsAuthentication.SetAuthCookie(userName, model.RememberMe);'
А в контроллере мы используем атрибут [Авторизованный], чтобы убедиться, что сеанс пользователя действителен и не истек. Он работает хорошо, когда пользователь переходит с одной страницы на другую. И если Cookie истек, то страница входа снова отображается.
Проблема заключается в одной странице (Dashboard), которая заставляет Ajax-вызовы серверу (контроллеру) обновлять некоторые элементы на экране каждую минуту.
В соответствии с политикой компании мы не можем иметь сессию более 30 минут. Поэтому, если эта страница остается открытой в течение 30 минут и истекает срок действия сеанса, мы хотели бы перенаправить на страницу входа. В настоящий момент, если сеанс истекает, эта страница остается прежней, но перестает обновляться, а затем пользователь жалуется, что не может просматривать данные. Конечно, они могут увидеть это снова, как только они обновят страницу, но есть ли способ, с помощью которого я могу найти с помощью JQuery или Java Script, срок действия которых истек в FormsAuthentication cookie
Конечно, они могут увидеть это снова, как только они обновят страницу, но есть ли способ, с помощью которого я могу найти с помощью JQuery или Java Script, срок действия которых истек в FormsAuthentication cookie
Да, ты можешь. Фил Хаак написал очень хорошее сообщение в блоге, в котором объяснялось, как можно запретить модуль проверки подлинности форм просто перенаправляться на страницу входа, но вместо этого вернуть код состояния 401, который может вызвать ваш клиентский вызов AJAX, и использовать window.location.href
для ручной перенаправления на страница авторизации.
Он также написал NuGet под названием AspNetHaack
который вы могли бы использовать, и если вам интересно просмотреть исходный код здесь: https://github.com/Haacked/CodeHaacks/tree/master/src/AspNetHaack