asp.net identity .GenerateUserToken() 有什么用
What is the use of asp.net identity .GenerateUserToken()
我了解来自 userManager.GeneratePasswordResetToken() 的令牌用于添加为超链接中的安全标识符,以便在密码重置请求时发送给用户。
但我不确定 userManager.GenerateUserToken() 的用户是什么。我能够生成令牌,
但不确定这是否可以转换为 SAML 令牌等声明并用于授权。
请帮助我理解这一点,因为我找不到任何关于此的好文档。
GenerateUserToken()
用于创建密码重置令牌和电子邮件确认令牌。此方法采用字符串参数 purpose
来描述将要发生的操作类型。实际上,此 purpose
是用于解密生成的令牌的加密密钥。
因此您可以为自己的目的创建自己的令牌,例如您可以在招聘应用程序中进行 ConfirmJobOffer
操作。您可以仅为该操作创建令牌,并将带有此令牌的 link 发送给用户:
var token = userManager.GenerateUserToken(userId, "ConfirmJobOffer");
// now send this token as part of the link
然后在控制器中,一旦令牌返回给您,您就可以调用:
var tokenCorrect = await userManager.VerifyUserTokenAsync(userId, "ConfirmJobOffer", token);
if (tokenCorrect)
{
// do stuff if token is correct
}
通常你不会直接使用 GenerateUserToken
,除非你正在做自定义标记。你会使用 GeneratePasswordResetTokenAsync
and GenerateEmailConfirmationTokenAsync
.
请注意:这不是为了做 SAML 令牌或相关授权。
添加到 trailmax 的答案中...
答案中的这一行交换了参数:
var token = userManager.GenerateUserToken(userId, "ConfirmJobOffer");
将生成
System.InvalidOperationException: 'UserId not found.'
应该是:
var token = userManager.GenerateUserToken("ConfirmJobOffer",userId);
我尝试编辑 post 但被拒绝了。我可以看到它看起来有点混乱的地方......但是 TUser 是用户提供的密钥或 "purpose" 而 TKey 是用户 ID。
来自UserManagerExtensions class:
public static string GenerateUserToken<TUser, TKey>(this UserManager<TUser, TKey> manager, string purpose, TKey userId)
where TUser : class, IUser<TKey>
where TKey : IEquatable<TKey>;
我了解来自 userManager.GeneratePasswordResetToken() 的令牌用于添加为超链接中的安全标识符,以便在密码重置请求时发送给用户。
但我不确定 userManager.GenerateUserToken() 的用户是什么。我能够生成令牌, 但不确定这是否可以转换为 SAML 令牌等声明并用于授权。
请帮助我理解这一点,因为我找不到任何关于此的好文档。
GenerateUserToken()
用于创建密码重置令牌和电子邮件确认令牌。此方法采用字符串参数 purpose
来描述将要发生的操作类型。实际上,此 purpose
是用于解密生成的令牌的加密密钥。
因此您可以为自己的目的创建自己的令牌,例如您可以在招聘应用程序中进行 ConfirmJobOffer
操作。您可以仅为该操作创建令牌,并将带有此令牌的 link 发送给用户:
var token = userManager.GenerateUserToken(userId, "ConfirmJobOffer");
// now send this token as part of the link
然后在控制器中,一旦令牌返回给您,您就可以调用:
var tokenCorrect = await userManager.VerifyUserTokenAsync(userId, "ConfirmJobOffer", token);
if (tokenCorrect)
{
// do stuff if token is correct
}
通常你不会直接使用 GenerateUserToken
,除非你正在做自定义标记。你会使用 GeneratePasswordResetTokenAsync
and GenerateEmailConfirmationTokenAsync
.
请注意:这不是为了做 SAML 令牌或相关授权。
添加到 trailmax 的答案中...
答案中的这一行交换了参数:
var token = userManager.GenerateUserToken(userId, "ConfirmJobOffer");
将生成
System.InvalidOperationException: 'UserId not found.'
应该是:
var token = userManager.GenerateUserToken("ConfirmJobOffer",userId);
我尝试编辑 post 但被拒绝了。我可以看到它看起来有点混乱的地方......但是 TUser 是用户提供的密钥或 "purpose" 而 TKey 是用户 ID。
来自UserManagerExtensions class:
public static string GenerateUserToken<TUser, TKey>(this UserManager<TUser, TKey> manager, string purpose, TKey userId)
where TUser : class, IUser<TKey>
where TKey : IEquatable<TKey>;