Browse Source

added AnonymousUserProvider

pull/45/head
Galip Tolga Erdem 5 years ago
parent
commit
0fe6718120
  1. 8
      apps/auth-server/src/EShopOnAbp.AuthServer/AnonymousUserProvider.cs
  2. 32
      apps/auth-server/src/EShopOnAbp.AuthServer/EShopUserClaimsPrincipalFactory.cs

8
apps/auth-server/src/EShopOnAbp.AuthServer/AnonymousUserProvider.cs

@ -0,0 +1,8 @@
using Volo.Abp.DependencyInjection;
namespace EShopOnAbp.AuthServer;
public class AnonymousUserProvider : ISingletonDependency
{
public string AnonymousUserId { get; set; }
}

32
apps/auth-server/src/EShopOnAbp.AuthServer/EShopUserClaimsPrincipalFactory.cs

@ -20,6 +20,7 @@ public class EShopUserClaimsPrincipalFactory : AbpUserClaimsPrincipalFactory
{ {
private readonly IHttpContextAccessor _httpContextAccessor; private readonly IHttpContextAccessor _httpContextAccessor;
private readonly ILogger<EShopUserClaimsPrincipalFactory> _logger; private readonly ILogger<EShopUserClaimsPrincipalFactory> _logger;
private readonly AnonymousUserProvider _anonymousUserProvider;
protected HttpContext HttpContext => _httpContextAccessor.HttpContext; protected HttpContext HttpContext => _httpContextAccessor.HttpContext;
public EShopUserClaimsPrincipalFactory( public EShopUserClaimsPrincipalFactory(
@ -28,7 +29,9 @@ public class EShopUserClaimsPrincipalFactory : AbpUserClaimsPrincipalFactory
IOptions<IdentityOptions> options, IOptions<IdentityOptions> options,
ICurrentPrincipalAccessor currentPrincipalAccessor, ICurrentPrincipalAccessor currentPrincipalAccessor,
IAbpClaimsPrincipalFactory abpClaimsPrincipalFactory, IAbpClaimsPrincipalFactory abpClaimsPrincipalFactory,
IHttpContextAccessor httpContextAccessor, ILogger<EShopUserClaimsPrincipalFactory> logger) : base(userManager, IHttpContextAccessor httpContextAccessor,
ILogger<EShopUserClaimsPrincipalFactory> logger,
AnonymousUserProvider anonymousUserProvider) : base(userManager,
roleManager, roleManager,
options, options,
currentPrincipalAccessor, currentPrincipalAccessor,
@ -36,31 +39,22 @@ public class EShopUserClaimsPrincipalFactory : AbpUserClaimsPrincipalFactory
{ {
_httpContextAccessor = httpContextAccessor; _httpContextAccessor = httpContextAccessor;
_logger = logger; _logger = logger;
_anonymousUserProvider = anonymousUserProvider;
} }
public override async Task<ClaimsPrincipal> CreateAsync(IdentityUser user) public override async Task<ClaimsPrincipal> CreateAsync(IdentityUser user)
{ {
var principal = await base.CreateAsync(user); var principal = await base.CreateAsync(user);
// if (HttpContext.Request.Cookies.ContainsKey(EShopConstants.AnonymousUserClaimName)) if (HttpContext.Request.Cookies.ContainsKey(EShopConstants.AnonymousUserClaimName))
// {
HttpContext.Request.Cookies.TryGetValue(EShopConstants.AnonymousUserClaimName, out var anonymousUserId);
principal.Identities.First()
.AddClaim(new Claim(EShopConstants.AnonymousUserClaimName, anonymousUserId));
_logger.LogInformation(
$"Added {EShopConstants.AnonymousUserClaimName} claim of AnonymousUserId from cookies:{anonymousUserId}");
// }
// You can notice that cookie contains anonymous_id
foreach (var cookie in HttpContext.Request.Cookies.ToList())
{ {
_logger.LogInformation($"key:{cookie.Key} - value:{cookie.Value}"); HttpContext.Request.Cookies.TryGetValue(EShopConstants.AnonymousUserClaimName, out var anonymousUserId);
} _anonymousUserProvider.AnonymousUserId = anonymousUserId;
_logger.LogInformation($"====================");
foreach (var claim in principal.Claims.ToList())
{
_logger.LogInformation($"key:{claim.Type} - value:{claim.Value}");
} }
principal.Identities.First()
.AddClaim(new Claim(EShopConstants.AnonymousUserClaimName, _anonymousUserProvider.AnonymousUserId));
_logger.LogInformation(
$"Added {EShopConstants.AnonymousUserClaimName} claim of AnonymousUserId from cookies:{_anonymousUserProvider.AnonymousUserId}");
return principal; return principal;
} }

Loading…
Cancel
Save