ASP.NET Identity是ASP.NET Core中用于处理用户认证和授权的一个组件。以下是如何在ASP.NET Core项目中使用ASP.NET Identity的简要步骤:
-
创建一个新的ASP.NET Core项目: 使用Visual Studio或命令行工具创建一个新的ASP.NET Core项目。选择"Web应用程序"模板。
-
添加ASP.NET Identity依赖项: 在项目的
Startup.cs
文件中,找到ConfigureServices
方法,然后使用AddIdentity
方法添加ASP.NET Identity依赖项。例如:public void ConfigureServices(IServiceCollection services) { services.AddDbContext
(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity () .AddEntityFrameworkStores () .AddDefaultTokenProviders(); services.AddControllersWithViews(); } 这里,我们创建了一个名为
ApplicationUser
的用户类和一个名为IdentityRole
的角色类。这些类通常继承自IdentityUser
和IdentityRole
。 -
创建用户和角色类: 在项目中创建一个新的文件夹(例如
Models
),然后创建ApplicationUser.cs
和IdentityRole.cs
文件。在这些文件中定义用户和角色类。例如:public class ApplicationUser : IdentityUser { // 添加自定义属性和方法 } public class IdentityRole : IdentityRole { // 添加自定义属性和方法 }
-
配置数据库上下文: 在项目中创建一个新的文件夹(例如
Data
),然后创建一个名为ApplicationDbContext.cs
的文件。在这个文件中定义一个继承自IdentityDbContext
的数据库上下文类。例如:public class ApplicationDbContext : IdentityDbContext
{ public ApplicationDbContext(DbContextOptions options) : base(options) { } } -
配置连接字符串: 在
appsettings.json
文件中添加一个名为DefaultConnection
的连接字符串,指向数据库。例如:"ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;MultipleActiveResultSets=true" }
-
创建数据库迁移: 在命令行中运行以下命令,以创建数据库迁移文件:
dotnet ef migrations add InitialCreate
然后运行以下命令,以应用迁移并创建数据库:
dotnet ef database update
-
使用ASP.NET Identity进行用户认证和授权: 在项目中创建一个新的文件夹(例如
Controllers
),然后创建一个名为AccountController.cs
的文件。在这个文件中,你可以使用ASP.NET Identity提供的方法进行用户注册、登录、注销等操作。例如:public class AccountController : Controller { private readonly UserManager
_userManager; private readonly SignInManager _signInManager; public AccountController(UserManager userManager, SignInManager signInManager) { _userManager = userManager; _signInManager = signInManager; } // 注册、登录、注销等方法 } -
配置路由: 在
Startup.cs
文件中,找到Configure
方法,然后添加以下代码以配置路由:app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });
现在,你已经成功地在ASP.NET Core项目中设置了ASP.NET Identity,并可以使用它进行用户认证和授权。你可以根据需要扩展用户和角色类,以及实现自定义的认证和授权逻辑。