1

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);
        }
    }
}
4

2 に答える 2

2

このようなものを web.config<configuration>セクションに追加します

<location path="Logout.ashx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
</location>

これにより、認証済みユーザーと匿名ユーザーの両方が Logout.ashx にアクセスできるようになります。

于 2011-06-22T15:59:09.450 に答える
0

ユーザーをどのようにログアウトしますか? Logout.aspx からコードを確認できますか? 一般的な方法は、Page_Load イベントに次の 2 行を含めることです。

Session.Abandon();
FormsAuthentication.SignOut();
于 2011-06-22T16:01:10.543 に答える