ClaimsPrincipalExtensions.cs 768 B

123456789101112131415161718192021222324252627
  1. using System.Security.Claims;
  2. using Microsoft.IdentityModel.JsonWebTokens;
  3. namespace Web.Api.Extensions;
  4. public static class ClaimsPrincipalExtensions
  5. {
  6. public static int? GetMemberID(this ClaimsPrincipal user)
  7. {
  8. var memberIDClaim = user.FindFirst(JwtRegisteredClaimNames.Sub)?.Value;
  9. if (int.TryParse(memberIDClaim, out var memberID))
  10. {
  11. return memberID;
  12. }
  13. return null;
  14. }
  15. /// <summary>
  16. /// 인증 필수 Endpoints에서 사용. 토큰이 없으면 UnauthorizedAccessException.
  17. /// </summary>
  18. public static int GetRequiredMemberID(this ClaimsPrincipal user)
  19. {
  20. return user.GetMemberID() ?? throw new UnauthorizedAccessException("인증 정보가 없습니다.");
  21. }
  22. }