- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 mac 计算机上使用 asp.net core,我正在尝试为我的 asp.net mvc Web 应用程序创建一个自定义 ApplicationUser,该应用程序与基本 IdentityUser 配合得很好。
尽管遵循 Microsoft 的本指南:
我遇到这个错误:
{"error":"No service for type 'Microsoft.AspNetCore.Identity.UserManager`1[Microsoft.AspNetCore.Identity.IdentityUser]' has been registered."}
以下是我的代码片段:
startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// [...]
services.AddDbContext<ApplicationDbContext>(
options => options.UseSqlServer(identityDbContextConnection));
// Relevant part: influences the error
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
}
ApplicationUser.cs
// Add profile data for application users by adding properties to the ApplicationUser class
public class ApplicationUser : IdentityUser
{
[Required]
public string DrivingLicense { get; set; }
}
注册.cshtml.cs
public class RegisterModel : PageModel
{
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly UserManager<ApplicationUser> _userManager;
private readonly ILogger<RegisterModel> _logger;
private readonly IServiceProvider _services;
public RegisterModel(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
ILogger<RegisterModel> logger,
IServiceProvider services
)
{
_userManager = userManager;
_signInManager = signInManager;
_logger = logger;
_services = services;
}
[BindProperty]
public InputModel Input { get; set; }
public string ReturnUrl { get; set; }
public class InputModel
{
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
// Added for ApplicationUser
[Required]
[Display(Name = "Driving License")]
public string DrivingLicense { get; set; }
// -----------------------------
// [...]
}
public void OnGet(string returnUrl = null)
{
ReturnUrl = returnUrl;
}
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (ModelState.IsValid)
{
var user = new ApplicationUser {
UserName = Input.Email,
Email = Input.Email,
DrivingLicense = Input.DrivingLicense // property added by ApplicationUser
};
var result = await _userManager.CreateAsync(user, Input.Password);
if (result.Succeeded)
{
_logger.LogInformation("User created a new account with password.");
await _signInManager.SignInAsync(user, isPersistent: false);
return LocalRedirect(returnUrl);
}
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
}
// If we got this far, something failed, redisplay form
return Page();
}
}
来自Manage/Index.cshtml.cs的片段
public class InputModel
{
[Required]
[EmailAddress]
public string Email { get; set; }
// Added for ApplicationUser
[Required]
[Display(Name = "Driving License")]
public string DrivingLicense { get; set; }
// -----------------------------
[Phone]
[Display(Name = "Phone number")]
public string PhoneNumber { get; set; }
}
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
// [...]
// Added for ApplicationUser
if (Input.DrivingLicense != user.DrivingLicense)
{
user.DrivingLicense = Input.DrivingLicense;
}
await _userManager.UpdateAsync(user);
// -------------------------
await _signInManager.RefreshSignInAsync(user);
StatusMessage = "Your profile has been updated";
return RedirectToPage();
}
ApplicationDbContext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
我无法遵循微软官方指南的唯一部分是编辑 Account/Manage/Index.cshtml 的部分,因为当我执行 CLI 步骤时,该文件没有搭建起来!
请注意,当我在 startup.cs 中将 ApplicationUser 替换为 IdentityUser 时,如下所示: services.AddIdentity<IdentityUser, IdentityRole>()
应用程序打开,但注册当然无法按预期正常工作。
最佳答案
问题出在“_LoginPartial.cshtml”
删除这个
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
添加这个
@using Microsoft.AspNetCore.Identity
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
关于c# - 类型 'Microsoft.AspNetCore.Identity.UserManager' : while trying to extend IdentityUser? 无服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51679144/
我已将我的代码从 ASP.NET Core 2.0 升级到 Core 2.1。我创建了一个新的 Core 2.1 项目并将我的代码移动到新项目中。我提供了我的启动示例和 ApplicationDbCo
我的解决方案中有多个项目,都是 .NET Core 3.1。其中之一是我的核心项目(“ A Project ”),其中我只有基本的模型类,没有方法或数据库访问权限。出于演示目的,以下是我的 Addre
我希望只有当他/她输入正确的旧密码时才能更改当前用户密码,如下所示: 但我一直在努力在这里和其他地方找到一个优雅的解决方案, 我的当前解决方案如下所示: var oldPasswordHashed =
对于我包含的最后两个框架,我不断收到此错误。我已经上下搜索了。不知道它是什么。我已经安装了 NuGet 包并尝试重新编译多次。什么都不起作用。这是我的代码。 using System; using S
我正在使用 asp.net Identity 2.0 供用户登录我的网站,身份验证详细信息存储在 SQL 数据库中。 Asp.net Identity 已以标准方式实现,可在许多在线教程中找到。 Id
我有一个应用程序使用 Microsoft.AspNetCore.Identity.UserManager 来管理用户。我使用核心 2.2。 UserManager 是通过我的服务中的内置依赖项注入(i
我正在使用 ASP.NET Identity,使用 MVC5 和 EntityFramework 6.1.3。我的问题是我无法将 IdentityUser 作为属性添加到另一个模型。 我的应用程序允许
我正在尝试使用代码优先方法,使用 .NET Core 2.1 和 Entity Framework Core(由 MySQL 支持)创建一个带有 IdentityUser 外键的新模型。我创建了一个如
我有以下派生自 IdentityUser 的类。 Person 类存储在数据库的 AspNetUsers 表中,在数据库端看起来一切正常。 public class Person : Identity
我有身份用户管理器的自定义用户电子邮件验证器。 它是根据附加属性 IsDeleted 为验证用户电子邮件而创建的(新用户可以使用已删除用户的电子邮件添加)。 这是它的样子。 public class
我看到与 this 相同的问题问题,但那里提出的情况似乎并不适用,所以我认为我有一个不同的问题。事实上,我在 SO 上看到了几个类似的问题,每个问题都有不同的原因和解决方案,所以我认为这个错误必须来自
我正在尝试研究如何将单元测试添加到我的项目中。我认为最好从一个空白项目开始,然后从头开始解决,而不是将其添加到我的主项目中。一旦我理解了这个过程,我想我可以开始重构我的项目以添加测试。 网络应用 所以
我想知道将 UserManager 添加到我的工作单元的最佳方法是什么。我应该使用 IUstrore 接口(interface)并在我的 Controller 中添加一个新的 UserManager
我有这门课 public class ApplicationUser : IdentityUser { public string Email { get; set; } public s
我正在尝试使用 EntityFrameworkCore (1.0.1) 将 .NET Core 1.1 MVC 应用程序从 SQLite ("Microsoft.EntityFrameworkCore
我使用代码优先模型进行了此设置: public class TestContext :IdentityDbContext { public TestContext() : ba
我正在尝试自定义一些使用泛型的 ASP.NET Identity Core 类。 我的 ApplicationUser 类: public class ApplicationUser : Identi
如何在 asp.net core 3.1 中的 json 序列化期间忽略某些属性,我可以在其他模型中执行 public class AppUser : IdentityUser
我有一种方法可以在我们的应用程序中更新用户声明。 我以管理员用户身份登录,可以编辑其他用户。 我正在尝试删除一位用户的现有声明并分配新的声明。 使用 UserManger 删除声明时我收到 Concu
我对自定义用户配置文件以在应用程序中实现自定义逻辑的最佳方式感到困惑。 假设您必须使用这种属性来分析用户: 等级 可以处理 可以离线工作 可以发送邮件 canViewFullName 我必须在哪里实现
我是一名优秀的程序员,十分优秀!