Add `tokenPurpose` parameter for `Generate` and `Verify` methods.

pull/9600/head
maliming 4 years ago
parent b9f3c30067
commit abeb9280a2

@ -4,6 +4,8 @@
{
public static string LinkUserTokenProviderName { get; set; } = "AbpLinkUser";
public static string LinkUserTokenPurpose { get; set; } = "AbpLinkUserLogin";
public static string LinkUserTokenPurpose { get; set; } = "AbpLinkUser";
public static string LinkUserLoginTokenPurpose { get; set; } = "AbpLinkUserLogin";
}
}

@ -124,7 +124,7 @@ namespace Volo.Abp.Identity
}
}
public virtual async Task<string> GenerateLinkTokenAsync(IdentityLinkUserInfo targetLinkUser, CancellationToken cancellationToken = default)
public virtual async Task<string> GenerateLinkTokenAsync(IdentityLinkUserInfo targetLinkUser, string tokenPurpose, CancellationToken cancellationToken = default)
{
using (CurrentTenant.Change(targetLinkUser.TenantId))
{
@ -132,11 +132,11 @@ namespace Volo.Abp.Identity
return await UserManager.GenerateUserTokenAsync(
user,
LinkUserTokenProviderConsts.LinkUserTokenProviderName,
LinkUserTokenProviderConsts.LinkUserTokenPurpose);
tokenPurpose);
}
}
public virtual async Task<bool> VerifyLinkTokenAsync(IdentityLinkUserInfo targetLinkUser, string token, CancellationToken cancellationToken = default)
public virtual async Task<bool> VerifyLinkTokenAsync(IdentityLinkUserInfo targetLinkUser, string token, string tokenPurpose, CancellationToken cancellationToken = default)
{
using (CurrentTenant.Change(targetLinkUser.TenantId))
{
@ -144,7 +144,7 @@ namespace Volo.Abp.Identity
return await UserManager.VerifyUserTokenAsync(
user,
LinkUserTokenProviderConsts.LinkUserTokenProviderName,
LinkUserTokenProviderConsts.LinkUserTokenPurpose,
tokenPurpose,
token);
}
}

@ -31,14 +31,16 @@ namespace Volo.Abp.Identity.AspNetCore
x.Value.ProviderType == typeof(LinkUserTokenProvider));
}
[Fact]
public virtual async Task GenerateAndVerifyLinkTokenAsync()
[Theory]
[InlineData("TestTokenPurpose1")]
[InlineData("TestTokenPurpose2")]
[InlineData("TestTokenPurpose3")]
public virtual async Task GenerateAndVerifyLinkTokenAsync(string tokenPurpose)
{
var john = await UserRepository.GetAsync(TestData.UserJohnId);
var token = await IdentityLinkUserManager.GenerateLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId));
(await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), token)).ShouldBeTrue();
(await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), "123123")).ShouldBeFalse();
var token = await IdentityLinkUserManager.GenerateLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), tokenPurpose);
(await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), token, tokenPurpose)).ShouldBeTrue();
(await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), "123123", tokenPurpose)).ShouldBeFalse();
}
}
}

Loading…
Cancel
Save