время ожидания cook ie не перенаправляет на страницу входа в asp. net core 2.2 - PullRequest
0 голосов
/ 22 апреля 2020

Я разрабатываю asp. net core 2.2 SPA и использую asp. net core Identity. Я настроил параметры cook ie для перенаправления на страницу входа в систему:

public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
        services.AddIdentity<ApplicationUser, ApplicationRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders()
                .AddErrorDescriber<IdentityErrorMessageDescriber>();

        services.AddAuthentication();
        services.AddAuthorization();

        services.ConfigureApplicationCookie(options =>
        {
            options.Cookie.HttpOnly = true;
            options.ExpireTimeSpan = TimeSpan.FromMinutes(10);
            options.LoginPath = new PathString("/Identity/Account/Login");
            options.ReturnUrlParameter = "";
            options.AccessDeniedPath = new PathString("/Identity/Account/AccessDenied");
            options.LogoutPath = new PathString("/Identity/Account/Logout");
            options.SlidingExpiration = false;
        });

        services.AddResponseCaching();
        services.AddMvc(options =>
                {
                    options.CacheProfiles.Add("DefaultNoCache",
                                                new CacheProfile()
                                                {
                                                    Duration = 0,
                                                    Location = ResponseCacheLocation.None,
                                                    NoStore = true
                                                }
                    );

                    var policy = new AuthorizationPolicyBuilder()
                                        .RequireAuthenticatedUser()
                                        .Build();
                    options.Filters.Add(new AuthorizeFilter(policy));
                })
                .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
                .AddViewLocalization(options => options.ResourcesPath = "Resources")
                .AddDataAnnotationsLocalization()
                .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver())
                .AddFluentValidation(options => {
                    options.RegisterValidatorsFromAssemblyContaining<Startup>();
                    options.RegisterValidatorsFromAssemblyContaining<SharedLocalizer>();
                });
    }

Я добавил [Authorize] вверху классов контроллера, и я использую множество вызовов действий, используя JQuery ajax, однако, когда срок действия сайта истекает (время ожидания) в соответствии с ExpireTimeSpan, действия возвращают код ответа 401 http на ajax, но никогда не происходит перенаправление на страницу входа . Только когда я обновляю sh страницу, сайт перенаправляется на страницу входа.

Другой вопрос: есть ли способ проверить время ожидания на стороне клиента, так как я часто использую Jquery ajax?

Спасибо

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