Использование аннотации Authorize в методе контроллера отображает «Отказано в доступе», несмотря на то, что пользователь имеет правильную роль - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть метод контроллера, который разрешено использовать только пользователям с ролью 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);

Теперь должно быть так, что администратор может редактировать сообщения в системе., но он говорит, что доступ запрещен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...