使用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 = "[email protected]" },
}
}
然后我发送带有URL的电子邮件:
/invite?token=some_token
[当用户访问URL时,我获得了具有给定令牌的记录。
例如,利用这些信息,我可以做任何事情,例如,将用户添加到组中。
问题
我应该如何创建唯一令牌?
我应该在令牌中包含哪些信息?
我应该如何验证呢?
ASP.NET Core身份提供了用于出于不同目的生成令牌的功能。
使用UserManager可以出于多种目的生成令牌。
可用的方法之一是UserManager.GenerateUserTokenAsync(TUser,String,String)。
您可以使用UserManager.VerifyUserTokenAsync(TUser,String,String,String)方法来验证令牌。
以下链接可帮助您入门:Identity Tokens