Browse Source

Merge pull request #9600 from abpframework/maliming/link-login-multiple-domain

Add `tokenPurpose` parameter for `Generate` and `Verify` methods.
pull/10657/head
liangshiwei 4 years ago
committed by GitHub
parent
commit
62846bbe95
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/LinkUserTokenProviderConsts.cs
  2. 8
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityLinkUserManager.cs
  3. 14
      modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs

4
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/LinkUserTokenProviderConsts.cs

@ -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";
}
}

8
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityLinkUserManager.cs

@ -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);
}
}

14
modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs

@ -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