В моем проекте 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;
});
}