use*_*512 4 asp.net asp.net-web-api asp.net-identity
所以 UserManager 有一个名为 GenerateUserTokenAsync(string purpose, TKey userId) 的函数。
这在 ASP Identity 中有什么作用?我可以使用它来生成 OAuth Bearer 令牌吗?另外目的参数是什么?这可以是什么值?
UserManager.GenerateUserTokenAsync(User, TokenProvider, Purpose)
Run Code Online (Sandbox Code Playgroud)
可用于为未实现为 UserManager 的目的生成令牌。
一个例子可以是邀请系统。在 WebProject 中,您需要像这样创建一个 TokenProvider:
public class InvitationTokenProvider<TUser> : DataProtectorTokenProvider<TUser> where TUser : class
{
public InvitationTokenProvider(IDataProtectionProvider dataProtectionProvider, IOptions<InvitationTokenProviderOptions> options, ILogger<DataProtectorTokenProvider<TUser>> logger) : base(dataProtectionProvider, options, logger)
{
}
}
Run Code Online (Sandbox Code Playgroud)
和 InvitationTokenProviderOptions
public class InvitationTokenProviderOptions : DataProtectionTokenProviderOptions
{
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以在StartUp.ConfigureServices().
services.AddIdentity<User, Role>(options =>
{
// ...
}).AddEntityFrameworkStores<ApplicationDbContect>()
.AddDefaultTokenProviders()
.AddTokenProvider<InvitationTokenProvider<User>>("Invitation");
Run Code Online (Sandbox Code Playgroud)
之后,您可以像这样将其与 UserManger 一起使用
// create a token
string token = await _userManager.GenerateUserTokenAsync(user, "Invitation", "Invitation");
// verify it
bool result = await _userManager.VerifyUserTokenAsync(user, "Invitation", "Invitation", token);
Run Code Online (Sandbox Code Playgroud)
如果您打算在 URL 中使用令牌,请不要忘记使其成为 URL-Safe(它可能包含“/”和其他符号。还要检查尾随的“==”是否在通过电子邮件和浏览器的过程中丢失。
“GenerateUserTokenAsync”的文档说
获取用于特定目的的用户令牌
这些方法应用于使用继承 DataProtectorTokenProvider ( GeneratePasswordResetTokenAsync) ( GenerateEmailConfirmationTokenAsync) 的自定义提供程序生成自定义或特定重置令牌。
与内置提供者的Confirmation和ResetPassword一起使用:
GenerateUserTokenAsync("Confirmation", userId); // email confirmation
GenerateUserTokenAsync("ResetPassword", userId); // password reset
Run Code Online (Sandbox Code Playgroud)
在令牌提供程序 ( TotpSecurityStampBasedTokenProvider) 的默认实现中,目的是在加密令牌生成中用作某种密码。
通常,您不需要GenerateUserTokenAsync直接调用,除非您有特定的用例,例如您想要为其实现重置令牌的自定义用户名更改流程。否则只需致电GeneratePasswordResetTokenAsync或GenerateEmailConfirmationTokenAsync.
| 归档时间: |
|
| 查看次数: |
6906 次 |
| 最近记录: |