我在新的VS2013 IDE中创建了一个新的MVC应用程序.我在AccountController上的Login Action中添加了以下内容,因为我想动态创建一个默认用户:
var admin = new ApplicationUser() { UserName = "administrator" }; var result = UserManager.Create(admin,"administrator");
user = UserManager.FindByName("administrator"); var roleresult = UserManager.AddToRole(user.Id,"admin");
第二行错误,因为它显然找不到角色“admin”,因为它还不存在,但我找不到UserManager上的相关方法.我在哪里可以找到动态添加角色的方法?
解决方法
我是这样做的.我有一个字典userRoles与预授权{userName,role}键 – 值对:
private void setRoles() { using(var rm = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()))) using(var um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()))) foreach (var item in userRoles) { if (!rm.RoleExists(item.Value)) { var roleResult = rm.Create(new IdentityRole(item.Value)); if (!roleResult.Succeeded) throw new ApplicationException("Creating role " + item.Value + "Failed with error(s): " + roleResult.Errors); } var user = um.FindByName(item.Key); if (!um.IsInRole(user.Id,item.Value)) { var userResult = um.AddToRole(user.Id,item.Value); if (!userResult.Succeeded) throw new ApplicationException("Adding user '" + item.Key + "' to '" + item.Value + "' role Failed with error(s): " + userResult.Errors); } } }
原文地址:https://www.jb51.cc/aspnet/251523.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。