- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 asp.net core 项目中编写用于向用户添加角色的代码
这是我的角色 Controller 。
public class RolesController : Controller
{
RoleManager<IdentityRole> _roleManager;
UserManager<AspNetUsers> _userManager;
public RolesController(RoleManager<IdentityRole> roleManager, UserManager<AspNetUsers> userManager)
{
_roleManager = roleManager;
_userManager = userManager;
}
public IActionResult Index() => View(_roleManager.Roles.ToList());
public IActionResult Create() => View();
[HttpPost]
public async Task<IActionResult> Create(string name)
{
if (!string.IsNullOrEmpty(name))
{
IdentityResult result = await _roleManager.CreateAsync(new IdentityRole(name));
if (result.Succeeded)
{
return RedirectToAction("Index");
}
else
{
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
}
}
return View(name);
}
[HttpPost]
public async Task<IActionResult> Delete(string id)
{
IdentityRole role = await _roleManager.FindByIdAsync(id);
if (role != null)
{
IdentityResult result = await _roleManager.DeleteAsync(role);
}
return RedirectToAction("Index");
}
public IActionResult UserList() => View(_userManager.Users.ToList());
public async Task<IActionResult> Edit(string userId)
{
// получаем пользователя
AspNetUsers user = await _userManager.FindByIdAsync(userId);
if(user!=null)
{
// получем список ролей пользователя
var userRoles = await _userManager.GetRolesAsync(user);
var allRoles = _roleManager.Roles.ToList();
ChangeRoleViewModel model = new ChangeRoleViewModel
{
UserId = user.Id,
UserEmail = user.Email,
UserRoles = userRoles,
AllRoles = allRoles
};
return View(model);
}
return NotFound();
}
[HttpPost]
public async Task<IActionResult> Edit(string userId, List<string> roles)
{
AspNetUsers user = await _userManager.FindByIdAsync(userId);
if(user!=null)
{
var userRoles = await _userManager.GetRolesAsync(user);
var allRoles = _roleManager.Roles.ToList();
var addedRoles = roles.Except(userRoles);
var removedRoles = userRoles.Except(roles);
await _userManager.AddToRolesAsync(user, addedRoles);
await _userManager.RemoveFromRolesAsync(user, removedRoles);
return RedirectToAction("UserList");
}
return NotFound();
}
}
但是当我运行应用程序并转到角色 Controller 时。我得到这个错误
An unhandled exception occurred while processing the request. InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Identity.RoleManager`1[Microsoft.AspNetCore.Identity.IdentityRole]' while attempting to activate 'VchasnoCrm.Controllers.RolesController'. Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired)
我该如何解决这个问题?
最佳答案
在 Net Core 3.1 中有两种不同的 ASP.NET Core Identity 重载,第一个版本名为 DefaultIdentity,您没有机会同时设置 User 和 Roles,因此语法如下所示
services.AddDefaultIdentity<IdentityUser>(options => ...
身份的第二个版本使用用户和角色,看起来像
services.AddIdentity<IdentityUser, IdentityRole>(options => ...
这是不同版本的身份,第一个包含 IdentityUI,第二个不包含 IdentityUI。但是,如果您将角色服务添加为
services.AddDefaultIdentity<IdentityUser>(options =>...).AddRoles<IdentityRole>()...
如果您已将角色服务包含到您的服务集中,您可以将角色注入(inject)到 Configure 方法中
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, DbContextOptions<ApplicationDbContext> identityDbContextOptions, UserManager<IdentityUser> userManager, RoleManager<IdentityRole> roleManager)
如果您注入(inject),通常会出现此错误消息
RoleManager<IdentityRole> roleManager
在项目的任何地方,无需添加 IdentityRole 服务(通过第一种或第二种方式)。
关于c# - 无法解析类型 'Microsoft.AspNetCore.Identity.RoleManager` 的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801168/
我目前正在为 Cassandra 使用以下配置: authenticator: PasswordAuthenticator authorizer: org.apache.cassandra.aut
我创建了一个上下文(带有脚手架)和一个用户。我还设置了播放数据库(并创建了一个迁移)。这非常有效!我现在只想创建一个角色,然后将其分配给用户。 为此,我修改了我的 startup.cs 文件以便继续(
我正在尝试对一些依赖于 UserManager 和 RoleManager 的方法进行单元测试,但遇到了一些困难。 我应该模拟 UserManager 和 RoleManager 然后将其传递给 Ad
如何在非托管中访问 UserManager 和/或 RoleManger,asp.net-5控制台应用程序包? 最佳答案 Program.cs public class Program { p
Microsoft.AspNetCore.Identity.RoleManager未填充 Claims调用时属性 FindByIdAsync(string id) github link to met
我正在开发一个应托管在 Windows Azure 环境中的 WCF 服务,因此我想使用 RoleManager.WriteToLog 方法来记录事件。我发现了很多描述此类用法的文章,通常日期为 20
我目前正在尝试使用依赖于 UserManager 和 RoleManager 的 C# 进行测试。我 mock 了他们,但这没有帮助,另外我得到一个异常,说明模拟对象不能转换为 User 或 Role
我模拟了抽象类来测试类的具体方法,如下所示。 var mock = new Mock(); mock.CallBase = true; var ta = mock.Object; ta.Control
请帮忙,我不知道如何将加密的 ConnectionString 与 RoleManager 一起使用 在 ASP.NET 中 这是 Web.config 中的代码。
我正在 ASP.NET CORE 2.1 应用程序上设置用户角色。但是,当我尝试使用 RoleManager 时,它会出错。我得到的错误是: No service for type 'Microsof
我在我的 asp.net core 项目中编写用于向用户添加角色的代码 这是我的角色 Controller 。 public class RolesController : Controller {
我使用教程 here 将用户数据库的主键从字符串更改为整数,但我在初始化角色管理器时遇到困难。它曾经使用初始化 var roleManager = new RoleManager(new RoleSt
我一直在关注这篇关于为新的 ASP.NET Identity 系统创建自定义“存储提供程序”的帖子,到目前为止,它已被证明非常有用; Creating a custom MySQL Identity
自从我把我的 MVC 项目运行时,我总是遇到错误 此代码在我的 web.config 上文件。 这就是我的错误: 配置错误
我看到了这个问题。但答案对我不起作用。 我创建了一个空的 asp.net 网站。 .NET 4.5 我通过 Install-Package Microsoft.AspNet.Identity.Samp
我正在尝试将 RoleManager 像 UserManager 一样传递给我的 Controller ,但出现此错误: An unhandled exception occurred while p
我一直在使用此链接为我的数据库做种 Seeding Db with AspNet Core 现在播种时我也想访问 UserManager和 RoleManager . 但是,因为这是在配置方法中调用的
我需要为 ROLES 创建 CRUD 操作。 我收到以下错误: “无法解析‘Microsoft.AspNetCore.Identity.RoleManager` 类型的服务” 那么,我该如何注入(in
我以前用过这个,但我终究无法弄清楚哪里出了问题。 @using System.Data.Entity; @using Microsoft.AspNet.Identity; @using Microso
有没有人为 UserManager 和 RoleManager 想出一个成功的模拟解决方案?我整天都在用头撞墙。我想要做的就是模拟对象以使用内存集合而不是访问 Entity Framework 数据存
我是一名优秀的程序员,十分优秀!