В моем веб-приложении asp.net я использую аутентификацию форм asp.net со следующей конфигурацией.
<authentication mode="Forms">
<forms name=".ASPNETAUTH" loginUrl="Login.aspx" protection="None" timeout="20" />
</authentication>
После истечения времени аутентификации формы я бы хотел перенаправить на другую страницу.Например, на страницу «SessionTimedOut.aspx».
Я нашел здесь другие вопросы, вот один, Время ожидания проверки подлинности с помощью форм по сравнению с временем ожидания сеанса
Ответ данимеет смысл, но первая строка кода меня смущает.
var cookie = Retrieve AuthenticationCookie();
if (cookie == null) return;
FormsAuthenticationTicket ticket = null;
try {
ticket = FormsAuthentication.Decrypt(cookie.Value);
} catch (Exceptoin decryptError) {
// Handle properly
}
if (ticket == null) return; // Not authorised
if (ticket.Expiration > DateTime.Now) {
Response.Redirect("SessionExpiredPage.aspx"); // Or do other stuff here
}
Теперь есть
FormsAuthentication.GetAuthCookie()
, который принимает имя пользователя и bool для сохранения cookie, но это для созданияAuth cookie не получает его.Итак, как будет выглядеть var cookie, первая строка кода.
В данный момент я использую "в веб-конфигурации, а затем, когда пользователь входит в настройки сеанса и затем в каждом сообщении обратно на страницу.init на моей базовой странице проверяет, является ли этот сеанс нулевым, и если да, перенаправляет на страницу с тайм-аутом сеанса. Это не совсем то, что я хочу.
Возможно, узнал, как получить cookie,
HttpCookie cookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
Это не работает, потому что, когда срок действия билета аутентификации истекает, cookie уходит, а переменная cookie имеет значение null. Любой другой способ заставить это работать? Я все еще хотел бы при обратной проверке, если аутентификация истеклаа затем принять соответствующие меры. Любые мысли от кого-либо ????