use*_*905 5 asp.net identity asp.net-roles visual-studio-2013
我在新的VS2013 IDE中创建了一个新的MVC应用程序.我在AccountController上的Login Action中添加了以下内容,因为我想动态创建一个默认用户:
var admin = new ApplicationUser() { UserName = "administrator" };
var result = UserManager.Create(admin, "administrator");
Run Code Online (Sandbox Code Playgroud)
这很好用,然后我想把这个默认用户放到一个新的默认角色:
user = UserManager.FindByName("administrator");
var roleresult = UserManager.AddToRole(user.Id,"admin");
Run Code Online (Sandbox Code Playgroud)
第二行错误,因为它显然找不到角色"admin",因为它还不存在,但我找不到UserManager上的相关方法来这样做.我在哪里可以找到动态添加角色的方法?
Ung*_*aro 15
我就是这样做的.我有一个字典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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20973 次 |
| 最近记录: |