/
klsfv
/
CalorieTracker
Обзор
Документация
Войти
/
klsfv
/
CalorieTracker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server/src/main/java/com/calorietracker/security/JwtTokenProvider.java
76 строк
2 KB
klsfv
upload files
15 янв 2026, 03:19
15 янв 2026, 03:19
09dece5
Код
Авторство
О чём код?
package com.calorietracker.security; import io.jsonwebtoken.*; import io.jsonwebtoken.security.Keys; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.crypto.SecretKey; import java.nio.charset.StandardCharsets; import java.util.Date; @Component public class JwtTokenProvider { @Value("${jwt.secret}") private String jwtSecret; @Value("${jwt.expiration}") private long jwtExpiration; @Value("${jwt.refresh-expiration}") private long refreshExpiration; public String generateToken(String userId) { Date now = new Date(); Date expiryDate = new Date(now.getTime() + jwtExpiration); SecretKey key = Keys.hmacShaKeyFor(jwtSecret.getBytes(StandardCharsets.UTF_8)); return Jwts.builder() .subject(userId) .issuedAt(now) .expiration(expiryDate) .signWith(key) .compact(); } public String generateRefreshToken(String userId) { Date now = new Date(); Date expiryDate = new Date(now.getTime() + refreshExpiration); SecretKey key = Keys.hmacShaKeyFor(jwtSecret.getBytes(StandardCharsets.UTF_8)); return Jwts.builder() .subject(userId) .issuedAt(now) .expiration(expiryDate) .signWith(key) .compact(); } public String getUserIdFromToken(String token) { SecretKey key = Keys.hmacShaKeyFor(jwtSecret.getBytes(StandardCharsets.UTF_8)); Claims claims = Jwts.parser() .verifyWith(key) .build() .parseSignedClaims(token) .getPayload(); return claims.getSubject(); } public boolean validateToken(String token) { try { SecretKey key = Keys.hmacShaKeyFor(jwtSecret.getBytes(StandardCharsets.UTF_8)); Jwts.parser() .verifyWith(key) .build() .parseSignedClaims(token); return true; } catch (JwtException | IllegalArgumentException e) { return false; } } }