2009-08-11 15 views
0

私は次のWeb.ConfigファイルでformAuthenticationを使用しています。FormsAuthentication.SignOut()を実行した後、ユーザーは再度ログインできません

<authentication mode="Forms"> 
    <forms name="SnowBall" timeout="30" slidingExpiration="true" loginUrl="Login.aspx"  cookieless="AutoDetect"> 
    </forms> 
</authentication> 
<authorization> 
    <deny users="?"/> 
</authorization> 

私はLogOutボタンを持つユーザーコントロールを持っています。ログアウトボタンのコードは次のとおりです。

FormsAuthentication.SignOut(); 
Response.Redirect("Login.aspx"); 

このコードを実行すると、ユーザーを認証できなくなります。 「サインイン」をクリックすると、ページがリフレッシュされ、イベントハンドラは実行されません。

ブラウザウィンドウを閉じてサイトを再実行すると、すべて正常に動作します。私を助けてください。

+0

Response.Redirect("Login.aspx"); 

を置き換える解決するには: を - クライアントの時計が正しいですか? - ログイン後にユーザーがリダイレクトしたページのキャッシュ設定がありますか? – Dewfy

+0

nopes、キャッシュ設定なし。 – Rohit

+0

2回目のログイン後にFiddlerの認証の認証Cookieを使用する。存在する場合はすべてOKです。それ以外の場合は、サーバーコードにいくつかの問題があります。 – Dewfy

答えて

0

それはそこに誰かを助け

問題は、それが何

Response.Redirect("Login.aspx"); 

このラインであるであるquerystring.For例:ようにreturnurlとlogin.aspxのためにユーザーをリダイレクトします。

Login.aspx?ReturnUrl = "ログアウトが発生したページの名前";

FormsAuthentication.GetRedirectUrl()はこのクエリー文字列のパスを保持し、認証がこのパスにリダイレクトされた後に、私が入れていたユーザーの資格情報にはこのページを表示する権限がありませんでした。私はいつもログイン画面。

愚かな質問がある可能性があります。問題が

Response.Redirect(FormsAuthentication.LoginUrl); 
+0

FormsAuthentication.RedirectToLoginPage()はそれほど役に立ちません。あなたのWeb.configにdefaultUrl属性が設定されている必要があります。つまり、 RichardOD

+0

いいえ、そこにdefaultUrlが設定されていません。私はFormsAuthentication.RedirectToLoginPage()と同じ問題に直面していました。 – Rohit

0

最初に、2つの別々のIDがあることを確認する必要があります.1つはブラウザセッション用に割り当てられたセッションIDで、もう1つは暗号化された英数字IDであるフォーム認証Cookieです。

formauthentication.signoutを使用すると、フォーム認証のCookieが実装ごとに削除されます。ただし、セッションIDはそこに残ります。

あなたはfiddler/firefoxブラウザを使用してチェックできます。私はsolution.Hopeを発見した

関連する問題