0

私は現在、私たちのサイトでセッションタイムアウトを処理するためのアクションフィルターを追加しています:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class SsoExpireFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if(!(filterContext.Controller.GetType() == typeof(HomeController) 
            && filterContext.ActionDescriptor.ActionName == MVC.Home.ActionNames.Index))
        {
            if(filterContext.ActionDescriptor.ActionName != MVC.Home.ActionNames.TimeoutRedirect.ToLower())
            {
                if (!Thread.CurrentPrincipal.Identity.IsAuthenticated)
                {
                    if (filterContext.HttpContext.Request.IsAjaxRequest())
                        filterContext.Result = new JsonResult { Data = "_Logon_" };
                    else
                        filterContext.Result = new RedirectToRouteResult(
                            new RouteValueDictionary
                        {
                            {"Controller", "Home"},
                            {"Action", "TimeoutRedirect"}
                        });
                }
            }
        }

        base.OnActionExecuting(filterContext);
    }
}

Principal.IdentityのIsAuthenticatedフラグは、タイムアウト後にfalseになると予想していますが、アクションフィルターでヒットした場合はtrueのままです。(Global.asaxのSession_Endにブレークポイントを設定したため、セッションがタイムアウトしたことはわかっています。これが最初にヒットします)。

私たちのサイトの認証は、会社の標準の「シングルサインオン」dllによって処理されるので、これは別の認証タイムアウトを設定していると思いますが、これは可能性が高いですか?

どんな助けでも大歓迎です。

4

3 に答える 3

2

Thread.CurrentPrincipal.Identity.IsAuthenticatedをHttpContext.User.Identityに置き換えたいと思います

Thread.CurrentPrincipalで何をしているのかは、サーバー上でWebアプリケーションをアクティブに提供しているユーザーが認証されているかどうかを尋ねていると思います。あなたがしたいことは、ユーザーが認証されているかどうかを尋ねることです。

于 2012-05-10T15:17:21.083 に答える
1

セッションCookieと認証Cookieは別のものです。まだ認証されているがセッションが期限切れになっているユーザーを持つことができます。この投稿を見てください:asp.net Cookie、認証、セッションタイムアウト

于 2012-05-10T16:40:21.243 に答える
0

おそらくちょっとした警官ですが、ビジネスの他のチームと相談した後、企業の「シングルサインオン」dllを使用し、Session.KeepAliveメソッドを使用する他のサイトのモデルに従うので、このアクションフィルターの必要性。

于 2012-05-11T10:26:36.490 に答える