我创建了一个注销处理程序,该注册处理程序在我的web.config中注册到Logout.aspx。我希望这能够从任何路径运行。它效果很好。我的主页面注册了一个客户端脚本功能,可以在他们的票证或会话即将到期前1分钟自动记录人员(他们会在2分钟后开始倒计时警告)。然而,即使我们将他们重定向到Logout.aspx之前1分钟,他们的票据即将到期,有时Logout.aspx不会将其视为已验证,然后重定向到登录页面。当然,他们会登录,然后立即重定向到注销页面并注销。我可以创建一个从不参与表单身份验证的HttpHandler吗?
有没有办法注册一个处理程序,所以它不参与FormsAuthentication。我猜这很容易使用IIS设置?我们使用IIS7。有什么建议么?
我的web.config:
<handlers>
<add name="Logout" verb="*" path="Logout.aspx" type="MyNamespace.HttpHandlers.LogoutHandler"/>
</handlers>
我的代码:
namespace MyNamespace.HttpHandlers
{
public class LogoutHandler : IHttpHandler, IRequiresSessionState
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
string[] myCookies = context.Request.Cookies.AllKeys;
foreach (string cookie in myCookies)
context.Response.Cookies[cookie].Expires = DateTime.Now.AddDays(-1);
FormsAuthentication.SignOut();
context.Session.Abandon();
context.Response.Redirect(Settings.Default.MyRootURL);
}
}
}
没有必要在标题中放入“ASP.NET/C#”。这就是我们在这里的标签。 –