перенаправить на вход в систему, когда сессия получает тайм-аут после вызова AJAX - PullRequest
0 голосов
/ 21 октября 2019

У меня проблема с текстом вызова ajax, когда время сеанса истекает. мне нужно знать, как перенаправить на страницу входа, когда сеанс истек в основном приложении asp после вызова ajax?

1 Ответ

0 голосов
/ 21 октября 2019
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
    public class AuthenticateAttribute : ActionFilterAttribute
    {
        private const string RequestedWithHeader = "X-Requested-With";
        private const string XmlHttpRequest = "XMLHttpRequest";

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext.HttpContext.Session.GetString("SessionData") == null)
            {
                if (filterContext.HttpContext.Request.Headers[RequestedWithHeader] == XmlHttpRequest)
                {
                    filterContext.HttpContext.Response.Clear();
                    filterContext.HttpContext.Response.StatusCode = 401;
                }
                else
                {
                    bool NoFilter = true;

                    foreach (var filterDescriptors in filterContext.ActionDescriptor.FilterDescriptors)
                    {
                        if (filterDescriptors.Filter.GetType() == typeof(IAllowAnonymous))
                        {
                            NoFilter = false;
                            return;
                        }
                    }
                    if (NoFilter)
                    {
                        var url = filterContext.HttpContext.Request.GetDisplayUrl();
                        filterContext.Result = new RedirectToPageResult("/Account/Login", new { area = "Identity", returnUrl = url });
                    }

                }
            }
            base.OnActionExecuting(filterContext);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...