-1

私のプロジェクトは1つのメインページで構成され、他のページはこのメインページ内のajaxを介してロードされます.サインアウトボタンのメインページを配置しましたが、それをクリックしても何も起こりませんもう一度クリックすると、ログインページに移動します。ただし、ブラウザの戻るボタンをクリックすると、メインページに戻ります。通常は発生しませんが、サインアウト機能が間違っていますか?

protected void Cikis_Click(object sender,DirectEventArgs e) 
  {
        FormsAuthentication.SignOut();
        Roles.DeleteCookie();
        Session.Clear();
        Session.Abandon();
        FormsAuthentication.RedirectToLoginPage();

  }

これが私の設定ファイルです。

 <roleManager enabled="true" />
      <authentication mode="Forms">
        <forms loginUrl="~/Default.aspx" />
      </authentication>
    <membership defaultProvider="MySqlMembershipProvider">
        <providers>
          <clear/>
          <!--Add a customized SqlMembershipProvider -->
          <add name="MySqlMembershipProvider"
          type="System.Web.Security.SqlMembershipProvider"
          connectionStringName="AProjeConnectionString"
          enablePasswordRetrieval="false"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="false"

          requiresUniqueEmail="false"
          passwordFormat="Hashed"
          maxInvalidPasswordAttempts="15"
          minRequiredPasswordLength="5"
          minRequiredNonalphanumericCharacters="0"
          passwordAttemptWindow="10"
          passwordStrengthRegularExpression=""/>
        </providers>
      </membership>

管理者というディレクトリがあり、保護されており、管理者の役割を持つユーザーのみを許可しています。

4

1 に答える 1

1

これは、ブラウザが前のページをキャッシュする際の問題です。戻るボタンをクリックすると、すでにロードされているものが表示されるだけで、サーバーからリロードされません。

ほとんどの場合、これは大きな問題ではありません。ユーザーが何かをしようとするとすぐにログイン プロンプトにリダイレクトされるからです。ただし、これがどうしても問題になる場合 (たとえば、ページに機密情報が含まれている可能性がある場合) は、ランタイム キャッシュをクリアする必要があります。

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));  
Response.Cache.SetCacheability(HttpCacheability.NoCache);  
Response.Cache.SetNoStore();  
Session.Abandon();
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
于 2013-06-24T06:48:54.240 に答える