У меня есть метод контроллера, который разрешено использовать только пользователям с ролью canModify.Я убедился, что у пользователя есть эта роль, и что он отображается как член этой группы ролей.Но когда я пытаюсь отредактировать сообщение в этой учетной записи, он отображает страницу «Доступ запрещен».
Я не уверен, куда идти.Я распечатал роли, принадлежащие текущему вошедшему в систему пользователю, и он отображает «canModify».Я распечатал список пользователей, которым принадлежит роль «canModify», и пользователя, на которого я вошел, как распечатано.
GET Edit метод в контроллере:
[Authorize(Roles = "canModify")]
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var post = await _context.Post.FindAsync(id);
if (post == null)
{
return NotFound();
}
return View(post);
}
Где установлена роль:
private async Task Admin(UserManager<ApplicationUser> userManager, ApplicationDbContext context)
{
await rm.CreateAsync(new IdentityRole("canModify"));
ApplicationUser admin = new ApplicationUser
{
UserName = "admin@test.com"
};
if (context.Users.Where(u => u.UserName == admin.UserName).Count() == 0)
{
userManager.CreateAsync(admin, "Password123!").Wait();
userManager.AddToRoleAsync(admin, "canModify").Wait();
}
}
Это мой метод Configure в Startup.cs:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
var scopeFactory = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>();
var scope = scopeFactory.CreateScope();
var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
DbInitializer dbi = new DbInitializer(roleManager);
dbi.Initialize(context, userManager);
Теперь должно быть так, что администратор может редактировать сообщения в системе., но он говорит, что доступ запрещен.