我是ASP.NET新手,我正在制作一个简单的练习项目。我从没有认证的简单MVC项目开始,因为它添加了许多我不理解的代码。
但是现在我想为我的系统添加会员资格,所以我遵循了这个指南:
http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-1
http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-2
但我不知道在哪里可以向用户实体添加角色..
My Startup课程是这样的:
public class Startup
{
public static Func<UserManager<Usuario>> UserManagerFactory { get; private set; }
public void Configuration(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ApplicationCookie"
});
UserManagerFactory = () =>
{
var usermanager = new UserManager<Usuario>(new UserStore<Usuario>(new Vetpet3Context()));
usermanager.UserValidator = new UserValidator<Usuario>(usermanager)
{
AllowOnlyAlphanumericUserNames = false
};
return usermanager;
};
}
}
我正在使用此操作创建(现在)我的用户:
[HttpPost]
public async Task<ActionResult> Register(RegisterModel model)
{
if (!ModelState.IsValid)
{
return View();
}
var user = new Usuario
{
UserName=model.correo,
correo = model.correo
};
var result = await userManager.CreateAsync(user, model.password);
if (result.Succeeded)
{
await SignIn(user);
return RedirectToAction("index", "Home");
}
foreach (var error in result.Errors)
{
ModelState.AddModelError("", error);
}
return View();
}
所以此时一切正常,但我需要为用户添加不同的角色,这就是我如何实现这一部分的问题?我已阅读了很多指南,但每个人都做了不同的事情,我不确定如何为新用户添加角色以及如何在登录时声明这些角色
答案 0 :(得分:3)
在成功注册后为用户添加角色:
if (result.Succeeded)
{
var roleResult = userManager.AddToRole(user.Id, "Admin");
await SignIn(user);
return RedirectToAction("index", "Home");
}
检查用户是否处于角色:
userManager.IsInRole(user.Id, "Admin");
在任何ASP.NET MVC [授权]控制器中甚至更简单:
User.IsInRole("roleName");