.NET Identity中AddIdentityCore搭配默认令牌提供者报错问题咨询
AddIdentityCore适配默认令牌提供者问题解答
核心差异
- AddIdentity:是完整的身份认证解决方案,自动注册了全套依赖服务,包括
IDataProtectionProvider、Cookie认证中间件、用户/角色管理器、令牌提供者所需的基础组件等,开箱即用支持令牌功能。 - AddIdentityCore:仅提供最核心的用户管理能力(用户管理器、用户存储接口),属于轻量级模块,不会自动注册DataProtection、外部通知(邮件/短信)等外围服务,而默认令牌提供者(如
DataProtectorTokenProvider)依赖这些未注册的服务,导致构造失败。
适配方法
要让AddIdentityCore兼容AddDefaultTokenProviders,需要手动补充缺失的依赖服务:
注册DataProtection服务
DataProtectorTokenProvider依赖IDataProtectionProvider生成加密令牌,必须先注册:services.AddDataProtection();若为非Web应用(如控制台),需额外配置密钥存储位置,比如:
services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(@"C:\Keys"));完整的服务注册示例
在调用AddDefaultTokenProviders前,确保核心用户服务+依赖项都已注册:services.AddIdentityCore<ApplicationUser>(options => { // 配置用户选项(密码、锁定等) }) .AddUserStore<YourUserStoreImplementation>() // 替换为你的用户存储实现 .AddDataProtectionTokenProvider<ApplicationUser>() .AddDefaultTokenProviders();额外注意事项
若要使用邮件/短信令牌提供者,还需手动注册对应的发送服务:- 邮件令牌:注册
IEmailSender实现 - 短信令牌:注册
ISmsSender实现
- 邮件令牌:注册
内容的提问来源于stack exchange,提问作者Popay
相关产品推荐
相关产品推荐

