Vérifier si un utilisateur est dans un rôle dans asp.net mvc Identité
Je vais avoir un problème de semis de ma base de données avec des utilisateurs et des rôles.
L'Utilisateur et le Rôle sont à la fois créés (je peux les voir dans la base de données après l'erreur est levée).
Cependant, lorsque j'essaie de vérifier si l'utilisateur est dans un rôle, j'obtiens une exception.
Mon code est:
public class tbInitializer<T> : DropCreateDatabaseAlways<tbContext>
{
protected override void Seed(tbContext context)
{
ApplicationDbContext userscontext = new ApplicationDbContext();
var userStore = new UserStore<ApplicationUser>(userscontext);
var userManager = new UserManager<ApplicationUser>(userStore);
var roleStore = new RoleStore<IdentityRole>(userscontext);
var roleManager = new RoleManager<IdentityRole>(roleStore);
if(!userscontext.Users.Any(x=> x.UserName=="marktest"))
{
var user = new ApplicationUser { UserName = "marktest", Email = "[email protected]" };
userManager.Create(user, "Pa$$W0rD!");
}
if (!roleManager.RoleExists("Admin"))
{
roleManager.Create(new IdentityRole("Admin"));
}
if(!userManager.IsInRole("marktest","Admin"))
{
userManager.AddToRole("marktest","Admin");
}
Cependant, sur la ligne:
if(!userManager.IsInRole("marktest","Admin"))
Une exception est levée avec l'erreur: UserId not found.
L'Utilisateur et le Rôle sont à la fois dans la base de données lorsque je vérifie après l'exception est levée:
N'importe qui peut voir ce que je fais mal?
Merci pour toute aide,
Marque
Avez-vous essayé
Hi - oui, j'ai ajouté
Est "marktest" de l'utilisateur enregistré dans une base de données?
Hi - oui, j'ai ajouté les captures d'écran à la question. Merci encore, Marque
SaveChanges()
avant if(!userManager.IsInRole("marktest","Admin"))
?Hi - oui, j'ai ajouté
context.SaveChanges();
- juste avant cette ligne, mais il est encore déclenche une exception avec la même erreur. Merci, MarcEst "marktest" de l'utilisateur enregistré dans une base de données?
Hi - oui, j'ai ajouté les captures d'écran à la question. Merci encore, Marque
OriginalL'auteur Mark | 2015-03-17
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution, au cas où quelqu'un d'autre a eu ce problème.
La "IsInRole", s'attend à un Utilisateur.Id - pas de nom d'utilisateur de la chaîne - j'ai donc changé:
Donc le code de travail devient:
J'espère que ça aide,
Marque
OriginalL'auteur Mark
Chose la plus simple dans la vie;
essayez d'utiliser @si (Rôles.IsUserInRole(Modèle.Nom d'utilisateur, "Administrateur")) si cela fonctionne
OriginalL'auteur Baqer Naqvi