ASP.NET MVC FormsAuthentication.SignOutが機能しません
-
05-07-2019 - |
質問
forms.signoutを使用しようとしていますが、ユーザーがログアウトせず、ユーザーがWebサイトをナビゲートできる場合があります。
これを解決するにはどうすればよいですか? web.configフォーム認証も構成しましたが、まだ機能していません。
FormsAuthenticationを使用して、ログインに合格したユーザーを認証しています。
ありがとう!!
解決
原因がわからないが、検討/試行する可能性のあるいくつかのこと
-
彼らは実際にサーバーによって生成されたページに実際にアクセスできますか、それとも単にローカルにキャッシュされたバージョンに戻りますか?彼らが認証されているかどうかを確認するコードを持つポストバックを引き起こした場合、それは機能しますか、それとも失敗しますか?私は後で彼らがサインアウトしているが、ログインしたページのキャッシュされたバージョンを表示している場合、インスタンスに使用してページをキャッシュしないようにクライアントに指示したいと思います:
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetNoStore();
-
Cookieの有効期限を手動で設定することもできますが、これはハッキングです
FormsAuthentication.SignOut(); Context.Response.Cookies.Item(FormsAuthentication.FormsCookieName).Expires = Date.Now; Response.Redirect("〜/ Somewhere.aspx");
他のヒント
ユーザーは、信頼済みサイトまたはイントラネットサイトにドメイン(または親ドメイン)を持っていますか?最近、ユーザーが認証されるいくつかの問題に遭遇しましたが、これが当てはまる状況では匿名です。私の場合、Windows統合認証を許可するように親サイトが一度に構成された可能性もあります。私はそれを削除してから削除しましたが、問題を解決するようには見えませんでした。これが効果を発揮するかどうかを確認するために、IISをまだ再起動していません。ビューの適切な部分がレンダリングされることを確認するために、ユーザーが認証されていることと匿名でないことの両方をチェックすることに頼りました。私のログインコードは匿名ログインを防ぐべきですが、これは実際にはより正確です。