optimise codes

master
Young 7 months ago
parent 347ecdfdc3
commit 9fb41b9d81

@ -38,7 +38,7 @@ public static class AuthenticationSetup
services.TryAddSingleton<DefaultTokenHandler>();
services.TryAddSingleton<IEncryptionService, EncryptionService>();
services.TryAddSingleton<IPostConfigureOptions<JwtBearerOptions>, JwtBearerOptionsPostConfigureOptions>();
services.TryAddSingleton(typeof(ITokenBuilder<>),typeof(TokenBuilderBase<>));
services.TryAddSingleton(typeof(ITokenBuilder), typeof(TokenBuilderBase<>));
var key = configuration["AUDIENCE_KEY"] ?? audienceOptions.Secret;
ArgumentException.ThrowIfNullOrEmpty(key);

@ -0,0 +1,11 @@
using System.IdentityModel.Tokens.Jwt;
namespace Infrastructure.Security;
public class DefaultTokenBuilder(
JwtOptions jwtOptions,
JwtSecurityTokenHandler jwtSecurityTokenHandler,
IEncryptionService encryptionService)
: TokenBuilderBase<long>(jwtOptions, jwtSecurityTokenHandler, encryptionService)
{
}

@ -7,9 +7,9 @@ using Microsoft.IdentityModel.Tokens;
namespace Infrastructure.Security;
public interface ITokenBuilder<TId> where TId : IEquatable<TId>
public interface ITokenBuilder
{
IList<Claim> GetClaimsFromUserContext(IUserContext<TId> userContext);
IList<Claim> GetClaimsFromUserContext<TId>(IUserContext<TId> userContext) where TId : IEquatable<TId>;
void SetUserContext(TokenValidatedContext context);
@ -20,9 +20,9 @@ public abstract class TokenBuilderBase<TId>(
JwtOptions jwtOptions,
JwtSecurityTokenHandler jwtSecurityTokenHandler,
IEncryptionService encryptionService)
: ITokenBuilder<TId> where TId : IEquatable<TId>
: ITokenBuilder where TId : IEquatable<TId>
{
public IList<Claim> GetClaimsFromUserContext(IUserContext<TId> userContext)
public virtual IList<Claim> GetClaimsFromUserContext<TId>(IUserContext<TId> userContext) where TId : IEquatable<TId>
{
var claims = new List<Claim>()
{
@ -39,7 +39,7 @@ public abstract class TokenBuilderBase<TId>(
return claims;
}
public void SetUserContext(TokenValidatedContext context)
public virtual void SetUserContext(TokenValidatedContext context)
{
var userContext =
context.HttpContext.RequestServices.GetService(typeof(IUserContext<TId>)) as IUserContext<TId> ??
@ -55,7 +55,7 @@ public abstract class TokenBuilderBase<TId>(
userContext.RemoteIpAddress = context.HttpContext.GetRequestIp()!;
}
public JwtTokenInfo GenerateJwtTokenInfo(IReadOnlyCollection<Claim> claims)
public virtual JwtTokenInfo GenerateJwtTokenInfo(IReadOnlyCollection<Claim> claims)
{
var jwtToken = new JwtSecurityToken(
issuer: jwtOptions.Issuer,

@ -28,4 +28,8 @@ public abstract class UserContextBase<TId> : IUserContext<TId> where TId : IEqua
public string[] RoleIds { get; set; }
public string RemoteIpAddress { get; set; }
}
public class DefaultUserContext : UserContextBase<long>
{
}

@ -4,7 +4,7 @@ namespace Infrastructure.Security;
public class JwtBearerOptionsPostConfigureOptions(
DefaultTokenHandler tokenHandler,
ITokenBuilder<long> tokenBuilder)
ITokenBuilder tokenBuilder)
: IPostConfigureOptions<JwtBearerOptions>
{
public void PostConfigure(string? name, JwtBearerOptions options)

Loading…
Cancel
Save