You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8中AddIdentity与AddIdentityCore适配及令牌提供者问题

.NET 8 Identity 升级问题:AddIdentity 弃用与令牌提供者配置解决方案

核心差异说明

  • AddIdentity<TUser, TRole> 属于 Microsoft.AspNetCore.Identity 包,该包在.NET 6+被标记为弃用,但.NET 6项目无需显式导入即可使用,原因是 Microsoft.AspNetCore.Identity.EntityFrameworkCore 在.NET 6版本中默认依赖它,间接引入了相关方法与命名空间。
  • AddIdentityCore<TUser> 是 Microsoft.Extensions.Identity.Core 提供的轻量级扩展,仅包含核心身份验证基础能力,角色管理、令牌提供者等功能需手动通过链式调用补充。

解决方案

1. 兼容式恢复使用 AddIdentity

尽管Microsoft.AspNetCore.Identity被标记为弃用,.NET 8仍完全支持该包,只需显式安装:

Install-Package Microsoft.AspNetCore.Identity -Version 8.0.0

安装后即可沿用原有代码:

services.AddIdentity<CustomUser, IdentityRole>()
        .AddEntityFrameworkStores<CustomDbContext>()
        .AddDefaultTokenProviders();

2. 基于 AddIdentityCore 手动配置令牌提供者

若不想依赖弃用包,可按以下步骤配置:

  1. 安装令牌提供者依赖包:
Install-Package Microsoft.AspNetCore.Identity.DataProtection -Version 8.0.0
  1. 手动添加所需令牌提供者,替代AddDefaultTokenProviders():
using Microsoft.AspNetCore.Identity;

// ...

services.AddIdentityCore<CustomUser>()
        .AddRoles<IdentityRole>()
        .AddEntityFrameworkStores<CustomDbContext>()
        // 添加默认数据保护令牌提供者
        .AddTokenProvider<DataProtectorTokenProvider<CustomUser>>(TokenOptions.DefaultProvider)
        // 可选:添加邮件/短信令牌提供者(按需启用)
        .AddTokenProvider<EmailTokenProvider<CustomUser>>(TokenOptions.DefaultEmailProvider)
        .AddTokenProvider<PhoneNumberTokenProvider<CustomUser>>(TokenOptions.DefaultPhoneProvider);

3. 解决 DataProtectorTokenProvider 无法解析问题

该类位于Microsoft.AspNetCore.Identity命名空间,需满足两个条件:

  • 已安装Microsoft.AspNetCore.Identity.DataProtection包(.NET 8中该类从原Microsoft.AspNetCore.Identity包拆分至此)
  • 代码文件顶部导入using Microsoft.AspNetCore.Identity;

内容的提问来源于stack exchange,提问作者kolev9605

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:14:55