optimise codes

master
Young 7 months ago
parent 1cf8ebdef3
commit d6e4ce6db5

@ -57,7 +57,7 @@ public interface IUserContext<TId> where TId : IEquatable<TId>
/// <param name="schemeName"></param> /// <param name="schemeName"></param>
/// <returns></returns> /// <returns></returns>
JwtTokenInfo GenerateTokenInfo(IList<Claim>? claims = null, JwtTokenInfo GenerateTokenInfo(IList<Claim>? claims = null,
double duration = 0, int duration = 0,
string schemeName = JwtBearerDefaults.AuthenticationScheme); string schemeName = JwtBearerDefaults.AuthenticationScheme);
/// <summary> /// <summary>

@ -59,27 +59,25 @@ public class UserContext<TId>(
public string Email public string Email
{ {
get => _email ??= principal.Claims.First(c => c.Type == JwtRegisteredClaimNames.Email).Value; get => _email ??= GetClaimValue(JwtRegisteredClaimNames.Email);
set => _email = value; set => _email = value;
} }
public string[] RoleIds public string[] RoleIds
{ {
get => _roleIds ??= principal.Claims.Where(c => c.Type == ClaimConstants.RoleId).Select(c => c.Value).ToArray(); get => _roleIds ??= GetClaimValues(ClaimConstants.RoleId);
set => _roleIds = value; set => _roleIds = value;
} }
public string[] RoleNames public string[] RoleNames
{ {
get => _roleNames ??= principal.Claims.Where(c => c.Type == ClaimTypes.Role) get => _roleNames ??= GetClaimValues(ClaimTypes.Role);
.Select(c => c.Value).ToArray();
set => _roleNames = value; set => _roleNames = value;
} }
public string[] Permissions public string[] Permissions
{ {
get => _permissions ??= principal.Claims.Where(c => c.Type == ClaimConstants.PermissionCode) get => _permissions ??= GetClaimValues(ClaimConstants.PermissionCode);
.Select(c => c.Value).ToArray();
set => _permissions = value; set => _permissions = value;
} }
@ -91,7 +89,7 @@ public class UserContext<TId>(
public JwtTokenInfo GenerateTokenInfo( public JwtTokenInfo GenerateTokenInfo(
IList<Claim>? claims = null, IList<Claim>? claims = null,
double duration = 0, int duration = 0,
string schemeName = JwtBearerDefaults.AuthenticationScheme) string schemeName = JwtBearerDefaults.AuthenticationScheme)
{ {
claims ??= GetClaimsFromUserContext(); claims ??= GetClaimsFromUserContext();
@ -104,9 +102,9 @@ public class UserContext<TId>(
{ {
Issuer = jwtContext.Issuer, Issuer = jwtContext.Issuer,
Audience = jwtContext.Audience, Audience = jwtContext.Audience,
Claims = claims?.ToDictionary(c => c.Type, c => (object)c.Value), Subject = new ClaimsIdentity(claims),
NotBefore = DateTime.Now, NotBefore = DateTime.UtcNow,
Expires = DateTime.Now.AddSeconds(duration), Expires = DateTime.UtcNow.AddSeconds(duration),
SigningCredentials = jwtContext.SigningCredentials, SigningCredentials = jwtContext.SigningCredentials,
}; };
var token = jsonWebTokenHandler.CreateToken(tokenDescriptor); var token = jsonWebTokenHandler.CreateToken(tokenDescriptor);
@ -123,7 +121,7 @@ public class UserContext<TId>(
new(JwtRegisteredClaimNames.Name, Name), new(JwtRegisteredClaimNames.Name, Name),
new(JwtRegisteredClaimNames.Email, Email), new(JwtRegisteredClaimNames.Email, Email),
new(JwtRegisteredClaimNames.Iat, new(JwtRegisteredClaimNames.Iat,
EpochTime.GetIntDate(DateTime.Now).ToString(CultureInfo.InvariantCulture), EpochTime.GetIntDate(DateTime.UtcNow).ToString(CultureInfo.InvariantCulture),
ClaimValueTypes.Integer64), ClaimValueTypes.Integer64),
new(JwtRegisteredClaimNames.Exp, new(JwtRegisteredClaimNames.Exp,
TimeSpan.FromSeconds(jwtContext.Duration).ToString()) TimeSpan.FromSeconds(jwtContext.Duration).ToString())

Loading…
Cancel
Save