1

jQueryUIダイアログボックスにaspログインコントロールがあります。このコントロールは、ユーザーのセッションが近づくか、すでに有効期限が過ぎるまで非表示になっています。クライアントスクリプトからaspxauthcookieのカスタムフィールドを読み取って、「セッションの拡張」メッセージを表示しています。このメッセージをクリックすると、非同期XHRがサーバーに送信され、更新された値のCookieが返されます。これはすべて正常に機能しています。私の問題は、ユーザーが「セッションの延長」メッセージに応答せず、セッションが期限切れになったときに発生します。次に、ログインコントロールを含むjQueryダイアログが表示されます。これにより、デフォルトのログインページに移動せずに認証できるようになります。ユーザーがログインコントロールを介して資格情報を送信すると、デフォルトのログインページに移動し、認証されません。何をしますか?

  • ASP.NETAJAXを使用していません
  • Global.asaxにFormsAuthentication_OnAuthenticateイベントを実装したので、それが役立つ場合は、そこでFormsAuthenticationEventArgsオブジェクトにアクセスできます。
4

2 に答える 2

1

セッションを延長すると同時に、FormsAuthenticationタイムアウトを延長する必要があります。

これが私が使っているものです

    public void Extend(int SessionLimit)
    {
        FormsAuthenticationTicket OriginalTicket = ((FormsIdentity)Context.User.Identity).Ticket;
        FormsAuthenticationTicket NewTicket = new FormsAuthenticationTicket(1, OriginalTicket.Name, DateTime.Now, DateTime.Now.AddMinutes(SessionLimit), false, OriginalTicket.UserData);
        HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(NewTicket));
        authCookie.HttpOnly = true;
        HttpContext.Current.Response.Cookies.Add(authCookie);
    }
于 2012-07-27T23:11:28.313 に答える
0

私たちはあなたとまったく同じ設定をしていませんし、あなたの再認証がどのように機能するのか正確にはわかりません。そのため、私はベースから外れる可能性がありますが、非常によく似た問題がありました。

私たちが抱えていた問題は、ログインの再認証に使用したページが認証制御下にあったことでした(つまり、そのページにアクセスするには、ログインする必要がありました)。

解決策は、web.configにエントリを追加して、そのページを「保護解除」することでした。たとえば、メインの構成要素に次のものを追加しました。

  <location path="loginreauth.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

これを実行すると、すべてが正しく機能しました。

于 2012-07-27T22:44:49.543 に答える