Bra*_*tin 34 asp.net asp.net-roles asp.net-identity
我知道新会员包括"简单角色提供者".
在创建用户时,我找不到与创建用户和分配角色相关的任何帮助.我添加了一个用户,它正确地在DB上创建了表.我看到了AspNetRoles,AspNetUserRoles和AspNetUsers表.
我想要将角色分配给AspNetRoles用户,在AspNetUsers该用户中,角色/用户的ID将存储在AspNetUserRoles中.
当我创建用户时,我坚持编程部分的位置以及如何执行此操作.
我有一个下拉列表来选择角色,但是使用Entity CF和新的ASP.NET Identity模型我不知道如何从下拉列表中获取selectedvalue的ID和UserID并分配角色.
Dev*_*per 63
我在新的VS 2013 Identity UserManager中动态添加角色,我找到了很好的答案
但是为了提供一个例子,你可以检查它,我将分享一些默认代码.
首先确保已插入角色.

并在用户注册方法上进行第二次测试.
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.UserName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var currentUser = UserManager.FindByName(user.UserName);
var roleresult = UserManager.AddToRole(currentUser.Id, "Superusers");
await SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
最后你必须以某种方式从角色下拉列表中获得"超级用户".
Tar*_*zan 23
我遇到了同样的挑战.这是我发现将用户添加到角色的解决方案.
internal class Security
{
ApplicationDbContext context = new ApplicationDbContext();
internal void AddUserToRole(string userName, string roleName)
{
var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
try
{
var user = UserManager.FindByName(userName);
UserManager.AddToRole(user.Id, roleName);
context.SaveChanges();
}
catch
{
throw;
}
}
}
Run Code Online (Sandbox Code Playgroud)
MyO*_*Way 12
虽然我同意关于RoleManager的其他答案,但我建议检查通过声明实现授权的可能性(表达角色作为声明).
从.NET Framework 4.5开始,Windows Identity Foundation(WIF)已完全集成到.NET Framework中.
在声明感知应用程序中,角色由应在令牌中提供的角色声明类型表示.调用IsInRole()方法时,会检查当前用户是否具有该角色.
角色声明类型使用以下URI表示:" http://schemas.microsoft.com/ws/2008/06/identity/claims/role "
因此,不是使用RoleManager,而是可以从UserManager "将用户添加到角色" ,执行以下操作:
var um = new UserManager();
um.AddClaimAsync(1, new Claim("http://schemas.microsoft.com/ws/2008/06/identity/claims/role", "administrator"));
Run Code Online (Sandbox Code Playgroud)
使用上面的行,您已向值为"1"的用户添加了值为"administrator"的角色声明...
根据MSFT的建议,声明授权可以简化并提高身份验证和授权过程的性能,从而在每次授权时都会消除一些后端查询.
使用声明您可能不再需要RoleStore.(AspNetRoles,AspNetUserRoles)
你在寻找这样的东西:
RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new MyDbContext()));
var str = RoleManager.Create(new IdentityRole(roleName));
Run Code Online (Sandbox Code Playgroud)
同时检查用户身份
| 归档时间: |
|
| 查看次数: |
85454 次 |
| 最近记录: |