在ASP.NET Core Identity的应用中,若想自定义IdentityUser或IdentityRole(例如,添加新的属性),通常使用以下代码:
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
namespace MyApplication.Models
{
public class ApplicationUser : IdentityUser
{
// 新的属性
public string MyCustomProperty { get; set; }
}
}
但是,在实际编写过程中,会出现以下错误:
cannot convert from 'MyApplication.Models.ApplicationUser' to 'Microsoft.AspNetCore.Identity.IdentityUser'
这是因为,IdentityUser类和IdentityRole类在实现中依赖了许多基于泛型的类型,而直接继承这些类,并添加新的属性会导致编译器丢失这些依赖。因此,我们需要手动在类中添加这些依赖。可以通过以下方式解决问题:
using Microsoft.AspNetCore.Identity;
using System;
namespace MyApplication.Models
{
public class ApplicationUser : IdentityUser
{
// 新的属性
public string MyCustomProperty { get; set; }
}
}
上述代码指定IdentityUser类的第一个类型参数为Guid。如果使用标识符,则应指定为string类型。
通过上述方法修改后,即可自定义IdentityUser和IdentityRole。