JwtProvider.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.example.projectback.security.jwt;
  2. import io.jsonwebtoken.*;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.security.core.Authentication;
  5. import org.springframework.stereotype.Component;
  6. import com.example.projectback.security.services.UserPrinciple;
  7. import java.util.Date;
  8. @Component
  9. public class JwtProvider {
  10. @Value("${com.example.project-back.jwtSecret}")
  11. private String jwtSecret;
  12. @Value("${com.example.project-back.jwtExpiration}")
  13. private int jwtExpiration;
  14. public String generateJwtToken(Authentication authentication) {
  15. UserPrinciple userPrinciple = (UserPrinciple) authentication.getPrincipal();
  16. return Jwts.builder()
  17. .setSubject(userPrinciple.getUsername())
  18. .setIssuedAt(new Date())
  19. .setExpiration(new Date((new Date()).getTime() + jwtExpiration* 1000L))
  20. .signWith(SignatureAlgorithm.HS512, jwtSecret)
  21. .compact();
  22. }
  23. public boolean validateJwtToken(String authToken) {
  24. try {
  25. Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(authToken);
  26. return true;
  27. } catch (SignatureException e) {
  28. System.out.println("Invalid JWT signature -> Message: {} " + e);
  29. } catch (MalformedJwtException e) {
  30. System.out.println("Invalid JWT token -> Message: {}" + e);
  31. } catch (ExpiredJwtException e) {
  32. System.out.println("Expired JWT token -> Message: {}" + e);
  33. } catch (UnsupportedJwtException e) {
  34. System.out.println("Unsupported JWT token -> Message: {}" + e);
  35. } catch (IllegalArgumentException e) {
  36. System.out.println("JWT claims string is empty -> Message: {}" + e);
  37. }
  38. return false;
  39. }
  40. public String getUserNameFromJwtToken(String token) {
  41. return Jwts.parser()
  42. .setSigningKey(jwtSecret)
  43. .parseClaimsJws(token)
  44. .getBody().getSubject();
  45. }
  46. }