c# - Checking if a user is in a role in asp.net mvc Identity -
i'm having issue seeding database users , roles.
the user , role both created (i can see them in database after error thrown).
however, when try check if user in role, exception.
my code is:
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 = "marktest@gmail.com" }; usermanager.create(user, "pa$$w0rd!"); } if (!rolemanager.roleexists("admin")) { rolemanager.create(new identityrole("admin")); } if(!usermanager.isinrole("marktest","admin")) { usermanager.addtorole("marktest","admin"); }
however, on line:
if(!usermanager.isinrole("marktest","admin"))
an exception thrown error: userid not found.
the user , role both in database when check after exception thrown:
can see i'm doing wrong?
thanks help,
mark
i found out solution, in case else having problem.
the "isinrole" expecting user.id - not username string - changed to:
if (!usermanager.isinrole(user.id, "admin")) { usermanager.addtorole(user.id, "admin"); }
so working code becomes:
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); // create role if (!rolemanager.roleexists("admin")) { rolemanager.create(new identityrole("admin")); } if(!userscontext.users.any(x=> x.username=="marktest")) { // create user var user = new applicationuser { username = "marktest", email = "marktest@gmail.com" }; usermanager.create(user, "pa$$w0rd!"); // add user role if (!usermanager.isinrole(user.id, "admin")) { usermanager.addtorole(user.id, "admin"); } }
i hope helps,
mark
Comments
Post a Comment