ASP. NET Core 3 SecurityStampValidator ничего не делать - PullRequest
0 голосов
/ 28 февраля 2020

В моем проекте asp. net core 3 с Identity вы можете изменять такие вещи, как роли, заявления о ролях или имена пользователей от других пользователей. SecurityStampValidator должен видеть, что отметка безопасности изменена, и при первом запросе от указанного пользователя должен быть обновлен повар ie или пользователь SignOut. Я знаю, что штамп безопасности не будет обновляться автоматически, если претензии будут изменены, для этого я делаю это вручную. Я знаю, что обычно интервал проверки установлен на 30 минут, изменил его на ноль.

Но также, когда я жду 30 минут, утверждения в поваре ie, например, имя пользователя, никогда не изменятся, пока я не вручную Выход. В БД штамп безопасности всегда меняется в нужные моменты.

Часть Startup.cs:

       public void ConfigureServices(IServiceCollection services)
        {
            var cultures = new[]
                {
                    new CultureInfo("de"),
                };
            services.AddDbContext<DM_WebApp_UserDBContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("AuthDBConnection")));
            services.AddDbContext<Data.DM_Tracking_DBContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DmcDBConnection")));
            services.AddIdentity<DmcUser,DmcRole>()//options =>options.SignIn.RequireConfirmedAccount = true)
                                                    //.AddRoles<DmcRole>()
                .AddDefaultUI()
                .AddDefaultTokenProviders()
                .AddEntityFrameworkStores<DM_WebApp_UserDBContext>()


            services.AddAuthorization(options =>
            {
                options.AddPolicy("IsAdmin", policy => policy.RequireRole("Administrator"));

                foreach (var claimitem in DmcClaimTypes.DmcClaimValueList())
                {
                    options.AddPolicy(claimitem.Complete, policy => policy.RequireClaim(claimitem.Type, claimitem.Value));
                }
            });
            services.AddRazorPages()
                .AddRazorPagesOptions(options =>
                {
                    options.Conventions.AuthorizeFolder("/xxx/xxx","xxx.xxx");
                })
                .AddExpressLocalization<ExpressLocalizationResource, ViewLocalizationResource>(
                ops =>
                {
                    ops.ResourcesPath = "LocalizationResources";
                    ops.RequestLocalizationOptions = o =>
                    {
                        o.SupportedCultures = cultures;
                        o.SupportedUICultures = cultures;
                        o.DefaultRequestCulture = new RequestCulture("de");
                    };
                });
            services.Configure<IdentityOptions>(options =>
            {

                // Password settings.
                options.Password.RequireDigit = true;
                options.Password.RequireLowercase = true;
                options.Password.RequireNonAlphanumeric = true;
                options.Password.RequireUppercase = true;
                options.Password.RequiredLength = 6;
                options.Password.RequiredUniqueChars = 1;

                // Lockout settings.
                options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
                options.Lockout.MaxFailedAccessAttempts = 5;
                options.Lockout.AllowedForNewUsers = true;

                // User settings.
                options.User.AllowedUserNameCharacters =
                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
                options.User.RequireUniqueEmail = true;
            });
            services.Configure<SecurityStampValidatorOptions>(options =>
            {               
                options.ValidationInterval = TimeSpan.Zero;
            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...