Я просто получил его для работы с моей установкой, которая также использует Identity Framework.
Я добавил пользователя к роли, используя следующий код:
this.RoleManager.CreateAsync(new Role() {Name = "Customers"});
this.UserManager.AddToRoleAsync(this.User.Identity.GetUserId<int>(), "Amazing");
Тогда в любое время после этого, когда я побежал User.IsInRole("Customers");
вернулся ложным, что пока я не relogged их обратно в
.
Вам необходимо повторно войти в систему после добавления пользователя в роль. Информация о роли хранится в файлах cookie.
Я побежал следующий войти пользователь снова:
var user = await this.UserManager.FindByNameAsync("bob");
var identity = await this.UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
this.AuthManager.SignIn(new AuthenticationProperties() { IsPersistent = true }, identity);
С этого момента, User.IsInRole("Customers")
работал для меня и вернулся true
.
Это не сработает, хотя вы не можете проверить в своем приложении, что он знает о роли, к которой вы хотите добавить. Вы можете проверить существование роли «клиентов», используя свой RoleManager следующим образом:
var roleExists = (this.RoleManager.FindByNameAsync("Customers").Result != null);
Означает ли ваша база данных, что пользователь определенно входит в эту роль и является ли имя роли точно правильным? И пользователь определенно зарегистрировался? IE ... если вы добавите '[Authorize]' в контроллер, выполняете ли действия нагрузки? – Luke
Имя роли правильное и его существует в db для этого пользователя. –
Если вы добавили '[Authorize (Roles =" Customers ")]' к вашему действию, загружается ли действие? Как вы добавили пользователя в эту роль? – Luke