在ASP.NET和ASP.NET Core中,可以共享同一个数据库来使用身份模型。下面是一个包含代码示例的解决方法:
创建一个共享的数据库模型: 在ASP.NET项目中,使用Entity Framework来创建一个数据库上下文(DbContext)类,用于管理用户和身份相关的数据库表。在ASP.NET Core项目中,同样使用Entity Framework Core来创建相同的数据库上下文类,确保在两个项目中使用的表结构和字段是一致的。
// 在ASP.NET项目中的数据库上下文类
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions options) : base(options)
{
}
// 用户表
public DbSet Users { get; set; }
// 角色表
public DbSet Roles { get; set; }
// 用户角色关联表
public DbSet UserRoles { get; set; }
// 其他相关表...
}
配置ASP.NET项目的Startup类: 在ASP.NET项目的Startup类的ConfigureServices方法中,配置Identity服务以及使用共享的数据库上下文。
// 在ASP.NET项目的Startup类中的ConfigureServices方法
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
// 其他配置...
}
配置ASP.NET Core项目的Startup类: 在ASP.NET Core项目的Startup类的ConfigureServices方法中,同样配置Identity服务以及使用共享的数据库上下文。
// 在ASP.NET Core项目的Startup类中的ConfigureServices方法
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
// 其他配置...
}
使用共享的身份模型: 现在,ASP.NET和ASP.NET Core项目都使用了相同的数据库上下文和身份模型。你可以在两个项目中使用相同的API来管理用户、角色和授权。
// 在ASP.NET或ASP.NET Core项目的控制器中使用身份模型
public class UserController : Controller
{
private readonly UserManager _userManager;
private readonly RoleManager _roleManager;
public UserController(
UserManager userManager,
RoleManager roleManager)
{
_userManager = userManager;
_roleManager = roleManager;
}
// 使用身份模型的其他操作...
}
这样,你就可以在ASP.NET和ASP.NET Core项目中共享同一个数据库上的身份模型了。