请阐述 ASP.NET Core 中 Identity 组件实现身份认证与授权功能的具体方法与机制。
考察说明
考查对 ASP.NET Core Identity 在认证与授权方面的理解与应用能力。
回答思路
- 【回答框架 1】ASP.NET Core Identity 是用于实现用户登录、角色管理、密码哈希等功能的框架,通常配合 EF Core 存储用户数据。认证(Authentication)确认用户身份,授权(Authorization)决定其访问权限。
- 【回答框架 2】认证流程:用户提交凭据(如用户名密码),应用调用 SignInManager 验证,成功后生成认证 Cookie(默认方案),后续请求自动携带身份信息。也可扩展 JWT 等方案。
- 【回答框架 3】授权机制:基于角色(Role)或策略(Policy),使用 [Authorize] 特性控制控制器或操作。策略可结合 Claim(声明)进行细粒度控制。
- 【回答框架 4】配置步骤:在 ConfigureServices 中添加 AddIdentity,配置数据库上下文(AddDbContext),在管道中使用 UseAuthentication 和 UseAuthorization。定制密码规则、锁定等选项。
- 【关键点 1】Identity 提供用户存储、密码哈希、登录管理与角色支持。
- 【关键点 2】认证通过 SignInManager 验证后颁发 Cookie,授权通过 [Authorize] 与策略实现。
- 【关键点 3】常用配置:AddIdentity 注册服务,UseAuthentication 与 UseAuthorization 启用中间件。
- 【易错点 1】认证与授权顺序不能颠倒,中间件需先认证后授权。
- 【易错点 2】密码策略过严或过松影响用户体验,需平衡安全与可用性。
- 【易错点 3】使用 EF Core 存储用户数据时,迁移需正确执行,否则运行时出错。