我是实体框架的新成员。 我在Web应用程序上工作时,我想对Angular网站进行用户身份验证。 用户登录工作正常。当我尝试添加用户角色时,出现以下错误消息:
然后出现以下错误: error
我将JWT令牌用作身份验证器。 还有Microsoft.IdentityModel。
我的代码: 启动文件 身份服务:
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<WebShopContext>();
JWT自动服务:
var key = Encoding.UTF8.GetBytes(Configuration["ApplicationSettings:JWT_Secret"]);
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(x=> {
x.RequireHttpsMetadata = false;
x.SaveToken = false;
x.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = false,
ValidateAudience = false,
ClockSkew = TimeSpan.Zero
};
});
}
我的ApplicationRole模型:
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base() { }
public ApplicationRole(string name) : base(name) { }
public string Description { get; set; }
}
}
我的ApplicationUser模型:
public class ApplicationUser : IdentityUser
{
[Column(TypeName="nvarchar(150)")]
public string FullName { get; set; }
[Column(TypeName = "nvarchar(100)")]
public string FirstName { get; set; }
[Column(TypeName = "nvarchar(100)")]
public string LastName { get; set; }
}
我绝对不知道。我怎么解决这个问题。请帮助我。
答案 0 :(得分:1)
尝试更改
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<WebShopContext>();
到
services.AddIdentity<ApplicationUser, IdentityRole>() // <--- changed to ApplicationUser
.AddEntityFrameworkStores<WebShopContext>();
从读取错误开始,我将假设您从IdentityUser
继承的模型为ApplicationUser
,而您正在设置服务以寻找IdentityUser
而不是ApplicationUser
就是您要的。