Я использую ядро веб-API с угловым 6
для аутентификации я использую Identity с сервером куки
все работает хорошо, но когда я хочу использовать [Authorize] Attribute
с ролью или не выше какого-либо действия, он всегда возвращает 401 как несанкционированный запрос.
В Startup.ConfigureServices:
services.AddIdentity<User, IdentityRole>(options =>
{
options.Password.RequiredLength = 8;
options.Password.RequireLowercase = true;
options.Password.RequireUppercase = true;
options.Password.RequireDigit = true;
options.Password.RequireNonAlphanumeric = true;
options.Lockout.DefaultLockoutTimeSpan =
TimeSpan.FromMinutes(Convert.ToInt32(_config["Tokens:accessFailedwaitingMin"]));
options.Lockout.MaxFailedAccessAttempts = Convert.ToInt32(_config["Tokens:accessFailedCount"]);
options.Lockout.AllowedForNewUsers = true;
}).AddEntityFrameworkStores<MyDbContext>()
.AddDefaultTokenProviders();
services.ConfigureApplicationCookie(options =>
{
// Override the default events
options.Events = new CookieAuthenticationEvents
{
OnRedirectToAccessDenied = ReplaceRedirectorWithStatusCode(HttpStatusCode.Forbidden),
OnRedirectToLogin = ReplaceRedirectorWithStatusCode(HttpStatusCode.Unauthorized)
};
// Configure our application cookie
options.Cookie.Name = ".test";
options.Cookie.HttpOnly = true; // This must be true to prevent XSS
//options.Cookie.SameSite = SameSiteMode.None;
options.Cookie.SecurePolicy = CookieSecurePolicy.None; // Should ideally be "Always"
options.SlidingExpiration = true;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
А в Startup.Configure
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("CorsPolicy");
app.UseCookiePolicy();
//app.UseHttpsRedirection();
app.UseMvc();
Примечание: однако я использую куки-файлы сервера, эти куки с именем '.test' не пришли в браузер, это изображение будет означать, что: