アプリケーションセクションへの認証とユーザー/ロールアクセスを実装するために、メンバーシッププロバイダーを使用してWebアプリに取り組んでいます。
マスター ページでコントロールをログアウト リンクとして使用LoginStatus
していますが、テストしたところ、ログアウトが機能しないことがわかりました。アプリケーションの任意のページに (ログイン後に) 再度アクセスしようとすると、そのページが表示されます...
この問題は、自動的にクリアされないユーザー セッションに保存されたデータに依存していると思います。それは正しい?
では、ログアウトとクリアセッションを実装する正しい方法はどれですか?
注LoginStatus
コントロール
のイベントは実装していません。フォーム認証を使用しています。私のログインページでは、次のコードを使用しています:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // Ticket version
this.txtUser.Text, // Username associated with ticket
DateTime.Now, // Date/time issued
DateTime.Now.AddMinutes(30), // Date/time to expire
true, // "true" for a persistent user cookie
ruolo, // User-data, in this case the roles
FormsAuthentication.FormsCookiePath);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
hash);
if (ticket.IsPersistent) { cookie.Expires = ticket.Expiration; }
Response.Cookies.Add(cookie);
私のweb.config system.web
セクションでは:
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="login.aspx" protection="All" path="/" domain="keyforup.it"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>