我正在使用ASP.NET Core 2.2,需要在应用程序中生成自定义标记。
Asp.Net Core Identity UserManager可以生成经典令牌,例如EmailVerification,...
但是它还有一种生成具有不同用途的令牌的方法(MSFT Docs):
public virtual System.Threading.Tasks.Task<string> GenerateUserTokenAsync (TUser user, string tokenProvider, string purpose);
我需要使用以下信息生成令牌:
在GenerateUserTokenAsync上,我可以添加用户和目的...
但是我不确定如何添加(3)和(4),例如ProjectId和RoleId。
以及以后如何检索它,以便我可以实际执行操作。
我应该怎么做?
答案 0 :(得分:0)
您可以创建一个自定义令牌提供程序,然后指示ASP.NET Core使用它。创建一个实现IUserTokenProvider<TUser, TKey>
的类。然后,您可以显式使用它:
var token = await _userManager.GenerateUserTokenAsync(user, "MyCustomTokenProvider", purpose);
或者您可以将其订阅给ConfigureServices
中的任何或所有身份令牌提供者:
services.AddIdentity<IdentityUser, IdentityRole>(o => {
o.Tokens.PasswordResetTokenProvider = nameof(MyCustomTokenProvider);
// rinse and repeat for other token providers you want to change
// see: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-configuration?view=aspnetcore-2.2#tokens
})
.AddTokenProvider<MyCustomTokenProvider>(nameof(MyCustomTokenProvider));
[1]: