7

私は新しい開発者であり、ログアウト機能が機能しない理由を理解するタスクが割り当てられています。私は見つけることができるすべての可能な方法を試しました。以下は、私が使用したメソッドを含む、私が保持しているログです。

  1. CommonHeader.ascxフォームにログアウトボタンを追加しました

  2. logout.aspx.vbフォームで多数のメソッドを試し、セッションを終了またはクリアしましたが、いずれも機能しません。

a。logout.aspx.vb形式で定義されたClearSessionサブルーチン:

Session("Variable") = ""
FormsAuthentication.SignOut()
Session.RemoveAll()
Session.Abandon()
Session.Clear()

b。また、これをPage_Loadサブルーチンの先頭に追加しました。

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.Cache.SetNoServerCaching()
HttpContext.Current.Response.Cache.SetNoStore()

c。また、ClearSessionサブルーチンをSession.Contents.Remove("Variable")からに変更しましたSession("Variable") = ""

これらの方法はどれも機能しません。私たちはSiteminderを使用していますが、これが問題の原因であるかどうか疑問に思っていました。Siteminderを使用するセッションをクリアしても何も見つかりません。また、このアプリケーションはVisualStudio2003でコーディングされていることにも注意してください。

これは、ascxファイルで使用しているボタンのコードです。

athp:TopNavText Title="ログアウト"NavigateUrl= "logout.aspx" Target = "_ top" /

次に、「logout.aspx」フォームで、上記の方法の1つ、またはそれぞれの組み合わせを使用してみました。これは私が触れる前のコードです:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  

     ClearSession() 
     Response.Redirect("login.aspx") 

End Sub 

Public Sub ClearSession() 

     Session("Variable") = "" 

End Sub
4

5 に答える 5

2

最終的に解決策を見つけました。私は当初、siteminderセッションIDを含むCookieを削除するときにドメインを定義しませんでした。私が使用したコードは次のとおりです。

        Dim cookie3 As HttpCookie = New HttpCookie("SMSESSION", "NO")
        cookie3.Expires = DateTime.Now.AddYears(-1)
        cookie3.Domain = ".domain.com"
        Response.Cookies.Add(cookie3)

        Response.Redirect("login.aspx")
于 2012-10-18T04:25:42.343 に答える
0

この投稿を見てください

C#クリアセッション

そのcシャープまたはvbにかかわらず、同じルールが引き続き適用されます。セッションを放棄してからクリアと呼んでいますが、クリアと呼んでいるときには、とにかくセッションが終了しているはずです。

Clearは、セッションの状態をその中のオブジェクトとともに保持するため、放棄後に呼び出すことで、実際にはユーザーのセッションを再初期化できますが、変数はクリアされます。

セッションを強制終了し、ログインページがある場合はログインページにリダイレクトする順序と適切な方法については、この投稿を参照してください

FormsAuthentication.SignOut()はユーザーをログアウトしません

于 2012-10-12T18:23:35.937 に答える
0

この質問:formsauthentication-signout-does-not-log-the-user-outは、FormsAuthentication.SignOut()を呼び出した後でもCookieをクリアしない問題について説明しています。これはあなたの問題のように聞こえます、彼らはそれが.NETのバグであると言います、そしてあなたが1.1を使うのでこれは明らかに可能であるように聞こえます。

于 2012-10-12T16:00:01.687 に答える
0

こんにちは友人は、ユーザーコントロールのボタンのクリックイベントを追加してください。そして、クリックイベントで次のコードを追加し、他のすべてのコードを削除してください。

Session( "Variable")= "";

于 2012-10-12T18:00:07.353 に答える
0

最初に注意することは、フォーム認証を使用している場合、Sessionはユーザーがログインしているかどうかとはまったく関係がないということです。

FormsAuthentication.SignOutを呼び出すと、CookiesSupportedがfalseの場合、CookieまたはURLからフォーム認証チケット情報が削除されます。

ただし、Sessionに保存される内容には影響しません。

アップデート

ログアウト(FormsAuthentication.SignOut)が機能していないのはなぜだと思いますか?[サインアウト]をクリックすると何が起こると思いますか。実際に何が起こっているのでしょうか。

セッションをクリアしてこれを確認するために、すべてのコードを削除します。たとえば、Fiddlerなどのツールを使用してhttpトラフィックを確認します。[ログアウト]をクリックすると、FormsAUthenticationCookieが削除されていることがわかります。

于 2012-10-12T19:07:45.890 に答える