此错误的可能原因是:
InvalidOperationException:没有注册类型为'Microsoft.AspNetCore.Identity.UserManager [Microsoft.AspNetCore.Identity.IdentityUser]'的服务。
我的目标框架是netcoreapp2.1。
这是我的用户商店类:
public class MyUserStore : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和我的用户角色类:
public class MyUserRole : IdentityRole
{
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的DbContext:
public class ApplicationDbContext : IdentityDbContext<MyUserStore,MyUserRole,string>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext>
options): base(options) { }
}
Run Code Online (Sandbox Code Playgroud)
我的ConfigureServices方法Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies …Run Code Online (Sandbox Code Playgroud) 我想同时使用基于 cookie 的身份验证,并且jwt在我的程序中,使用身份验证用户mvc通过登录访问控制器,并使用 JWT 访问 WebApi 资源。
我尝试使用其中的两个首先,我的客户端可以使用用户名和密码登录并使用 cookie 进行身份验证。来自 Application with WebApi with Token Bearer 的第二个访问资源,但出现错误!
在我的startup.cs文件中,我有:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
options.ConsentCookie.Name = "Cookie";
});
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "Cookie";
options.ClaimsIssuer = Configuration["Authentication:ClaimsIssuer"];
});
services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultUI(UIFramework.Bootstrap4)
.AddDefaultTokenProviders();
services.Configure<IdentityOptions>(options =>
{
// Password settings.
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true; …Run Code Online (Sandbox Code Playgroud)