2

フォーム認証で有効期限をスライドさせて SignalR を使用すると、問題が発生しました。SignalR がサーバーからポーリングし続けるため、ユーザー認証が期限切れになることはありません...

私は多くのことを調査しました...そしてhttp://www.asp.net/signalr/overview/security/introduction-to-security#reconcileから興味深い記事を見つけました

彼らは言った:

サイトがフォーム認証でスライド有効期限を使用しており、認証 Cookie を有効に保つためのアクティビティがない場合、ユーザーの認証ステータスが変わる可能性があります。その場合、ユーザーはログアウトされ、ユーザー名は接続トークンのユーザー名と一致しなくなります。

ユーザーが20分間アイドル状態になった場合、ユーザーの認証を期限切れにする必要がありますが、できません..

何か案は?
どうもありがとう!

4

1 に答える 1

0

この同じ問題に遭遇しました。パイプラインの最後で HttpModule を使用して認証 Cookie を削除する GitHub の問題に投稿された 1 つの方法を見つけました。これは私のシナリオではうまくいきました。

https://github.com/SignalR/SignalR/issues/2907

public class SignalRFormsAuthenticationCleanerModule : IHttpModule
{
   public void Init(HttpApplication application)
   {
      application.PreSendRequestHeaders += OnPreSendRequestHeaders;
   }

   private bool ShouldCleanResponse(string path)
   {
      path = path.ToLower();
      var urlsToClean = new string[] { "/signalr/", "<and any others you require>" };

      // Check for a Url match
      foreach (var url in urlsToClean)
      {
         var result = path.IndexOf(url, StringComparison.OrdinalIgnoreCase) > -1;
         if (result)
            return true;
      }

      return false;
   }

   protected void OnPreSendRequestHeaders(object sender, EventArgs e)
   {
      var httpContext = ((HttpApplication)sender).Context;

      if (ShouldCleanResponse(httpContext.Request.Path))
      {
         // Remove Auth Cookie from response
         httpContext.Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
         return;
      }
   }
}
于 2015-12-08T18:10:17.067 に答える