0

これは非常に些細な質問のようですが、それでも実行できません。私はasp.net Webアプリケーションを構築しており、ここでフォーム認証を使用しています。私が従った次の手順。

1) web.config では、これはエントリです

    <認証モード="フォーム">
          <forms loginUrl="Default.aspx" timeout="30" defaultUrl="StockTips.aspx" cookieless="UseCookies"
                 SlidingExpiration="true" />
        </認証>
        <sessionState mode="InProc" cookieless="false" タイムアウト="30" />

2) default.aspx でカスタム認証を使用し、認証がパスした後、web.config に記載されている defaultUrl にリダイレクトしています。以下はコードです。これはうまくいっています。

セッション["テスト"] = "テスト";
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, true);

Login1 は asp.net のログイン コントロールです。

3) StockTips.aspx (defaulturl) では、Logout linkbutton クリック イベントで、自動的に loginurl (default.aspx) にリダイレクトされるようにセッションを破棄しようとしています。これは起こっていません。同じページ、つまり StockTips.aspx にとどまっています。以下はコードです。

        protected void lnkLogout_Click(オブジェクト送信者、EventArgs e)
        {
            文字列 str = セッション["テスト"].ToString();

            Session.Abandon();
            //Session.RemoveAll();
            //Session.Clear();

            //FormsAuthentication.SignOut();

            string str1 = Session["test"].ToString();
        }

Session["test"] の値も残ります。上記のコメント付きのコードを試しました。セッションが放棄されると、自動的に loginurl にリダイレクトされると確信しているため、Response.Redirect を明示的に loginurl に書き込みたくありません。しかし、どういうわけかそれは機能していません。

次の情報が役立つかどうかはわかりませんが、追加することを考えました. default.aspx と stocktips.aspx の両方が開くマスター ページがあります。マスター ページではなく、stocktips.aspx 内の LinkBut​​ton。

私の側からさらに情報が必要な場合はお知らせください。

助けてください!

前もって感謝します。

よろしく、

サマール

4

1 に答える 1

0

私はあなたがセッションで正しくやっていると思います. ただし、web.config ファイルで、フォーム認証のために Cookie を有効にしたことを確認してください。セッションを削除しても、認証の詳細を含む Cookie はブラウザーに残ります (Cookie のタイムアウトは 30 分です)。そのため、認証の詳細は、タイムアウトになるまで、またはブラウザを閉じるまで Cookie に残ります。セッションを削除する代わりに、Cookie を削除してみてください。

于 2013-05-06T07:48:03.500 に答える