#c# #asp.net-mvc #asp.net-core #authorization #asp.net-identity
Вопрос:
Я добавил ролевую авторизацию в свой проект MVC и добавил роль своему пользователю, но на странице все еще написано «Доступ запрещен». Вот некоторые из моих кодов:
Startup.cs
builder.ConfigureServices((context, services) => {
services.AddDbContext<AuthDbContext>(options =>
options.UseSqlServer(
context.Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<ApplicationUser>(options =>
{
options.SignIn.RequireConfirmedAccount = false;
options.Password.RequireLowercase = true;
options.Password.RequireUppercase = true;
options.Password.RequireDigit = true;
})
.AddRoles<IdentityRole>()
.AddRoleManager<RoleManager<IdentityRole>>()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores<AuthDbContext>();
});
Пример Авторизации Контроллера
[Authorize(Roles = "Coach")]
public class ScheduleController : Controller
{
private readonly ApplicationDbContext _db;
private readonly IWebHostEnvironment WebHostEnvironment;
public ScheduleController(ApplicationDbContext db, IWebHostEnvironment webHostEnvironment)
{
_db = db;
WebHostEnvironment = webHostEnvironment;
}
[AllowAnonymous]
public IActionResult Index()
{
С SQL Server:
Идентификатор пользователя — Пользователи AspNetUsers
Информация о роли — AspNetRoles
Роль пользователя — AspNetUserRoles
Комментарии:
1. По многим причинам. Прежде всего, используете ли вы стандартные страницы входа в .net или внесли изменения. Вы пробовали отладку при входе в систему, чтобы убедиться, что роли загружены, если вы не используете стандартный вход.