创建和验证邀请码/令牌

Mig*_*ura 5 c# .net-core asp.net-core asp.net-core-identity asp.net-core-2.2

使用 ASP.NET Core 我正在创建一个系统来邀请用户加入一个组,获得免费积分,...

当邀请用户加入组时,我创建了一个保存在数据库中的邀请:

令牌与其他信息一起保存在数据库中:

Invitation invitation = new Invitation {
  InvitationType = "JoinGroup",
  Completed = false,
  Expiry = DateTime.Now.AddDays(4),
  Token = some_token,
  Parameters = new List<Parameter> { 
    new Parameter { Name = "GroupId", Value = 22 },
    new Parameter { Name = "RoleId", Value = "Admin" },
    new Parameter { Name = "Email", Value = "someuser@name.com" },
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我发送一封带有网址的电子邮件:

/invite?token=some_token
Run Code Online (Sandbox Code Playgroud)

当用户访问 url 时,我会使用给定的令牌获取记录。

有了这些信息,我可以做任何我需要做的事情,例如,将用户添加到组中。

我应该如何创建一个独特的令牌?

我应该在令牌中包含哪些信息?

我应该如何验证它?

Dar*_*ekt 3

ASP.NET Core Identity 提供了为不同目的生成令牌的功能。

使用 UserManager,您可以生成用于多种目的的令牌。

可用的方法之一是 UserManager.GenerateUserTokenAsync(TUser, String, String)。

您可以使用 UserManager.VerifyUserTokenAsync(TUser, String, String, String) 方法验证令牌。

参考文档

以下链接将帮助您入门: 身份令牌