Update Authorization.md

pull/8569/head
maliming 5 years ago committed by GitHub
parent bdf555ae07
commit 53b49c1355
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -397,24 +397,24 @@ This is already done for the startup template integration tests.
Abp abstracts the way that authentication creates `ClaimsPrincipal`. You can provide a custom `IAbpClaimsPrincipalContributor` to add additional claims. Abp abstracts the way that authentication creates `ClaimsPrincipal`. You can provide a custom `IAbpClaimsPrincipalContributor` to add additional claims.
Example of add `EditionId` of current tenant to user claims: Example of add `SocialSecurityNumber` of current tenant to user claims:
```csharp ```csharp
public class EditionClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency public class SocialSecurityNumberClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency
{ {
public async Task ContributeAsync(AbpClaimsPrincipalContributorContext context) public async Task ContributeAsync(AbpClaimsPrincipalContributorContext context)
{ {
var identity = context.ClaimsPrincipal.Identities.FirstOrDefault(); var identity = context.ClaimsPrincipal.Identities.FirstOrDefault();
if (identity != null) if (identity != null)
{ {
var currentTenant = context.ServiceProvider.GetRequiredService<ICurrentTenant>(); var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
if (currentTenant.Id != null) if (currentUser.Id.HasValue)
{ {
var tenantRepository = context.ServiceProvider.GetRequiredService<ITenantRepository>(); var userManager = context.ServiceProvider.GetRequiredService<IdentityUserManager>();
var tenant = await tenantRepository.FindAsync(currentTenant.Id.Value); var user = await userManager.GetByIdAsync(currentUser.Id.Value);
if (tenant?.EditionId != null) if (user?.SocialSecurityNumber != null)
{ {
identity.AddOrReplace(new Claim(AbpClaimTypes.EditionId, tenant.EditionId.ToString())); identity.AddOrReplace(new Claim("SocialSecurityNumber", user.SocialSecurityNumber));
} }
} }
} }
@ -422,7 +422,7 @@ public class EditionClaimsPrincipalContributor : IAbpClaimsPrincipalContributor,
} }
``` ```
The `EditionClaimsPrincipalContributor` will participate in it when the `CreateAsync` method of `IAbpClaimsPrincipalFactory` is called. The `SocialSecurityNumberClaimsPrincipalContributor` will participate in it when the `CreateAsync` method of `IAbpClaimsPrincipalFactory` is called.
> The [Identity module](https://docs.abp.io/en/abp/latest/Modules/Identity) has integrated it. > The [Identity module](https://docs.abp.io/en/abp/latest/Modules/Identity) has integrated it.

Loading…
Cancel
Save