Я использую VS Code на Mac для создания нескольких проектов MVC. Они настраиваются при создании для использования Identity Framework. Затем я захожу в базу данных, создаю роль администратора и привязываю ее к своему пользователю. Когда я запускаю проект локально через Visual Studio Code и пытаюсь посетить контроллер, которому я назначил эту роль, я не могу войти. «Доступ запрещен ... у вас нет разрешения ..».
Если я открою тот же проект в Visual Studio 2017, все будет работать так, как должно. Это меня сбило с толку. Я не могу понять, что мне не хватает, у меня нет проблем с извлечением данных из БД в представление. Как только я ввожу [Authorize (Roles = "Admin")] в контроллер, я перенаправляюсь на страницу входа.
Я использую проект Core 2.2 MVC с базой данных MySQL с коннектором Pomelo.EntityFrameworkCore.MySql.
Нет, не видел. Также я наткнулся на это: stackoverflow.com/questions/52531131/…
Это может произойти, если вы настраиваете схемы аутентификации с помощью политики по умолчанию, например:
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
).
Вы пробовали выйти из системы, затем назначить роль и снова войти в систему?