表单身份验证超时后重定向到页面
在我的asp.net Web应用程序中,我使用了以下配置的asp.net表单身份验证。表单身份验证超时后重定向到页面
<authentication mode="Forms">
<forms name=".ASPNETAUTH" loginUrl="Login.aspx" protection="None" timeout="20" />
</authentication>
表单验证超时后,我想重定向到不同的页面。例如“SessionTimedOut.aspx”页面。
我发现其他问题放在这里,这里是一个,Forms Authentication Timeout vs Session Timeout
给出的答案是有道理的,但代码的第一行有我困惑。
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()
这需要用户名和布尔坚持cookie的,但是这是建立一个权威性的cookie没有得到它。那么,var cookie,第一行代码是什么样的。
目前,我正在使用“在网页配置,然后当用户登录设置会话,然后在每个回发页面init在我的基本页面检查是否该会话为空,如果是,重定向到会话超时页面。这不是我真正想要的东西。
可能已经找到了如何让饼干,
HttpCookie cookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
因为当验证票证过期这不起作用,该cookie去并且cookie var是空的任何其他方式得到这个工作?我仍然喜欢在回发检查身份验证是否过期并且然后采取适当的行动。任何想法从任何人?
需要记住的是,即使出在服务器端会话时间,客户端将不,直到它的下一个请求处理任何事情。那时它会发现它的会话已经过期并尝试重新启动会话。 Response.Redirect甚至Server.Redirect调用对此无济于事。
您需要做的是将您的服务器超时与客户端超时同步,并且有一些客户端脚本将用户重定向到“超时”类型页面。我写了一篇关于如何做here的示例代码。
问:那么,var cookie,第一行代码是什么样子?
var cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName]
谢谢,这是我需要的。刚发现刚才回答自己。 – developerdoug 2011-06-15 21:13:20