web.config の Logout.aspx に登録されているログアウト ハンドラーを作成しました。これをどのパスからでも実行できるようにしたい。それはうまくいきます。私のマスター ページは、チケットまたはセッションの有効期限が切れる 1 分前にユーザーを自動的にログアウトさせるクライアント スクリプト関数を登録します (残り 2 分からカウントダウン警告が表示されます)。ただし、チケットの有効期限が切れると思われる 1 分前に Logout.aspx にリダイレクトしても、Logout.aspx はそれらを認証済みと見なさず、ログイン ページにリダイレクトすることがあります。もちろん、ログインするとすぐにログアウト ページにリダイレクトされ、ログアウトされます。
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);
}
}
}