我已经创建了一个小型的车队管理应用程序,并在Microsoft网站和其他网站上找到的教程和材料的帮助下。
我设法实现了用户管理服务(从一开始就没有创建带有身份验证的项目),尽管我创建了“管理员”角色并将其分配给管理员,但现在可以创建新用户并从界面BUT进行管理。帐户(通过Startup.cs),我很难创建一个UI来管理角色(创建,修改,删除,分配角色给用户)。我已经搜索了3天,无法找到有关如何使用RoleManager创建控制器和视图的正确教程。
任何人都能指出我正确的方向吗?
我正在使用 ASP.NECore.All 2.0.6和EF Core 2.1.1
AccountController:
public class AccountController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly IEmailSender _emailSender;
private readonly ILogger _logger;
public AccountController(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
IEmailSender emailSender,
ILogger<AccountController> logger)
{
_userManager = userManager;
_signInManager = signInManager;
_emailSender = emailSender;
_logger = logger;
}
ManageController:
public class ManageController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly IEmailSender _emailSender;
private readonly ILogger _logger;
private readonly UrlEncoder _urlEncoder;
private const string AuthenticatorUriFormat = "otpauth://totp/{0}:{1}?secret={2}&issuer={0}&digits=6";
private const string RecoveryCodesKey = nameof(RecoveryCodesKey);
public ManageController(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
IEmailSender emailSender,
ILogger<ManageController> logger,
UrlEncoder urlEncoder)
{
_userManager = userManager;
_signInManager = signInManager;
_emailSender = emailSender;
_logger = logger;
_urlEncoder = urlEncoder;
}
其余操作是默认操作,是您在创建具有“个人帐户身份验证”的新项目时获得的操作。
答案 0 :(得分:0)
您可以使用IdentityRole
类,该类由asp.net核心标识实现提供。首先,将角色管理器添加到您的类中并注入它。
private readonly RoleManager<IdentityRole> _roleManager;
在构造函数中传递RoleManager<IdentityRole>
并添加
_rolemanager = rolemanager
要创建新角色,请在视图和控制器中使用IdentityRole
public IActionResult AddRole()
{
var role = new IdentityRole
{
Name = "Customer", //Name will be sufficient
};
_roleManager.CreateAsync(role); //role actually comes as parameter from view
return View();
}
在用户创建和更新视图上,您可以阅读所有角色并创建一个下拉列表(使用multiselect分配多个角色)。
public IList<IdentityRole> GetAllRoles()
{
return _roleManager.Roles.ToList();
}
最后,在添加/更新用户时,现在应该将其分配给角色。
//single
_userManager.AddToRoleAsync(user, role); //role should be role name
//multiple
_userManager.AddToRolesAsync(user, roles); // roles should be list of role names