【发布时间】:2019-10-29 13:06:22
【问题描述】:
我正在使用 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" },
}
}
然后我发送一封带有 url 的电子邮件:
/invite?token=some_token
当用户访问 url 时,我会使用给定的令牌获取记录。
有了这些信息,我可以做任何我需要做的事情,例如,将用户添加到组中。
问题
我应该如何创建唯一令牌?
我应该在令牌中包含哪些信息?
我应该如何验证它?
【问题讨论】:
-
主要基于意见.... 1.
Guid.NewGuid()2. 无 3. 通过检查它是否在数据库中(并将其设置为过期/已使用) -
这个问题太宽泛了。有很多方法可以解决这个问题。
-
这是一个完全有效的问题。事实上,ASP.NET Core 有一个特定的功能。
-
@Darkonekt 你能具体说明你在说哪个功能吗?
-
我发布了一个答案,为您指明了正确的方向。但是我没有发布任何代码,因为你还没有尝试过任何东西。但是,如果您在实施解决方案时遇到问题,我很乐意在您尝试自己的代码后提供帮助。
标签: c# asp.net-core .net-core asp.net-core-2.2 asp.net-core-identity