0

我正在使用 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);

我需要使用以下信息生成令牌:

  1. 目的 = AddUserToProject
  2. 用户 = 给定用户
  3. ProjectId = 应将用户添加到的项目 ID。
  4. RoleId = 项目中用户的角色 ID

在 GenerateUserTokenAsync 我可以添加用户和目的......

但我不确定如何添加 (3) 和 (4),例如 ProjectId 和 RoleId。

以及如何稍后检索它,以便我可以实际执行操作。

我该怎么做?

4

1 回答 1

3

您可以创建自定义令牌提供程序,然后指示 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]:

于 2019-09-12T18:47:35.963 回答