Это может произойти, если вы настраиваете схемы аутентификации с помощью политики по умолчанию, например:
services.AddAuthorization(options =>
{
var defaultRequirements = new[] {
new DenyAnonymousAuthorizationRequirement()
};
var defaultSchemes = new[] {
CookieAuthenticationDefaults.AuthenticationScheme,
JwtBearerDefaults.AuthenticationScheme,
OpenIdConnectDefaults.AuthenticationScheme
};
var defaultPolicy = new AuthorizationPolicy(defaultRequirements, defaultSchemes);
options.DefaultPolicy = defaultPolicy;
});
Когда вы добавляете требование к атрибуту Authorize
(здесь, роль),политика по умолчанию игнорируется, а ваш пользователь не аутентифицирован.
Если это так, вы можете добавить два атрибута Authorize
на свой контроллер: один для принудительной аутентификации, а другой для роли:
[Authorize] // deny anonymous, force authentication
[Authorize(Roles = "Admin")] // additional roles check
public class MyController : Controller
{
}
Добавление нескольких атрибутов Authorize
позволяет проверить несколько требований (логика AND
).