feat(simple-jwt-jjwt): Added the feature to generate a new Token using data from the original Token.
This commit is contained in:
+22
@@ -23,9 +23,11 @@ import cn.org.codecrafters.simplejwt.SecretCreator;
|
|||||||
import cn.org.codecrafters.simplejwt.TokenPayload;
|
import cn.org.codecrafters.simplejwt.TokenPayload;
|
||||||
import cn.org.codecrafters.simplejwt.TokenResolver;
|
import cn.org.codecrafters.simplejwt.TokenResolver;
|
||||||
import cn.org.codecrafters.simplejwt.annotations.ExcludeFromPayload;
|
import cn.org.codecrafters.simplejwt.annotations.ExcludeFromPayload;
|
||||||
|
import cn.org.codecrafters.simplejwt.constants.PredefinedKeys;
|
||||||
import cn.org.codecrafters.simplejwt.constants.TokenAlgorithm;
|
import cn.org.codecrafters.simplejwt.constants.TokenAlgorithm;
|
||||||
import cn.org.codecrafters.simplejwt.exceptions.WeakSecretException;
|
import cn.org.codecrafters.simplejwt.exceptions.WeakSecretException;
|
||||||
import cn.org.codecrafters.simplejwt.jjwt.config.JjwtTokenResolverConfig;
|
import cn.org.codecrafters.simplejwt.jjwt.config.JjwtTokenResolverConfig;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import io.jsonwebtoken.Claims;
|
import io.jsonwebtoken.Claims;
|
||||||
import io.jsonwebtoken.Jws;
|
import io.jsonwebtoken.Jws;
|
||||||
import io.jsonwebtoken.Jwts;
|
import io.jsonwebtoken.Jwts;
|
||||||
@@ -303,6 +305,26 @@ public class JjwtTokenResolver implements TokenResolver<Jws<Claims>> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Re-generate a new token with the payload in the old one.
|
||||||
|
*
|
||||||
|
* @param oldToken the old token
|
||||||
|
* @param expireAfter how long the new token can be valid for
|
||||||
|
* @return re-generated token with the payload in the old one
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String renew(String oldToken, Duration expireAfter) {
|
||||||
|
var resolvedToken = resolve(oldToken);
|
||||||
|
var tokenPayloads = resolvedToken.getBody();
|
||||||
|
|
||||||
|
var audience = tokenPayloads.getAudience();
|
||||||
|
var subject = tokenPayloads.getSubject();
|
||||||
|
|
||||||
|
PredefinedKeys.KEYS.forEach(tokenPayloads::remove);
|
||||||
|
|
||||||
|
return createToken(expireAfter, audience, subject, tokenPayloads);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renews the given expired token with the specified custom payload data.
|
* Renews the given expired token with the specified custom payload data.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user