Как можно автоматически назначить роль по умолчанию зарегистрированному пользователю. Я стараюсь это, но он не работает, и я получаю сообщение об ошибке:Автоматически назначать роль по умолчанию
[ProviderException: The role 'Member' was not found.]
Это то, что я делаю:
Seed моя роль по умолчанию, так что существует с самого начала:
// Configuration.cs, Seed method.
if (!context.Roles.Any(r => r.Name == "Member"))
{
var store = new RoleStore<IdentityRole>(context);
var manager = new RoleManager<IdentityRole>(store);
var role = new IdentityRole { Name = "Member" };
manager.Create(role); // Member role gets created in AspNetRoles table.
}
чем после обновления-баз данных, добавить зарегистрированный пользователь к этой роли:
// AccountController, Register method (POST).
var user = new ApplicationUser { ... }
if (.. Succeeded)
{
..
if (!Roles.IsUserInRole(user.UserName, "Member"))
Roles.AddUserToRole(user.UserName, "Member");
return RedirectToAction("Index", "Home");
}
При регистрации новой учетной записи, я получите ошибку:
[ProviderException: The role 'Member' was not found.] // Member exits in AspNetRoles
Line 176: if (!Roles.IsUserInRole(user.UserName, "Member"))
Line 177: Roles.AddUserToRole(user.UserName, "Member");
Работал как шарм! Мой метод посева также использует неправильный менеджер ролей или я могу оставить его таким? – user3231419
@ user3231419: Нет, вы используете 'RoleManager', который является правильным, следовательно, роль отображается в таблице 'AspNetRoles', а не какая-то таблица' webpages_Roles' ... –
ChrFin
Нашел небольшую проблему с использованием этот метод: после регистрации нового пользователя пользователь получает назначение в «Member» -role в базе данных, но еще не на странице _Layout.cshtml, где я проверяю, является ли активный пользователь членом. Он только признает, что пользователь имеет роль-член, когда я выхожу из системы и снова вхожу в систему, любая идея, что пошло не так? – user3231419