asp.net标识有什么用.GenerateUserToken()

时间:2015-01-12 08:46:40

标签: asp.net-identity

我理解来自userManager.GeneratePasswordResetToken()的令牌用于在超链接中添加安全标识符,以便在密码重置请求时发送给用户。

但我不确定userManager.GenerateUserToken()的用户是什么。我能够生成令牌, 但不确定这是否可以转换为SAML令牌等声明,并用于授权。

请帮助我理解这一点,因为我无法找到有关此问题的任何好文件。

2 个答案:

答案 0 :(得分:15)

GenerateUserToken()用于创建密码重置令牌和电子邮件确认令牌。此方法采用字符串参数purpose来描述将要发生的操作类型。实际上,purpose是一个加密密钥,用于解密生成的令牌。

因此,您可以为自己的目的创建自己的令牌,例如,您可以在招聘应用程序中进行ConfirmJobOffer操作。您可以为该操作创建令牌,并将带有此令牌的链接发送给用户:

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,除非您正在使用自定义令牌。您可以使用GeneratePasswordResetTokenAsyncGenerateEmailConfirmationTokenAsync

请注意:这不是为了进行SAML令牌或相关授权。

答案 1 :(得分:1)

添加到Trailmax的答案中...

答案的这一行已交换参数:

DEFAULT_SEARCH_FILTERS

会生成

  

System.InvalidOperationException:'找不到用户ID。'

它应显示为:

var token = userManager.GenerateUserToken(userId, "ConfirmJobOffer");

我尝试编辑帖子,但被拒绝了。我可以看到它看起来有点令人困惑……但是TUser是用户提供的Key或“用途”,而TKey是userId。

从UserManagerExtensions类中:

var token = userManager.GenerateUserToken("ConfirmJobOffer",userId);