2016-03-04 31 views

cevap

7

JWT nesneleri kodlanmış Base64URL vardır. Bu, üstbilgileri ve yükü her zaman Base64URL kodunu çözerek manuel olarak okuyabileceğiniz anlamına gelir. Bu durumda exp özniteliğini göz ardı edeceksiniz. Böyle yapabilirsiniz örneğine (örneğin Apache Commons Codec gibi ben yerleşik Base64 sınıfında Java8 kullanıyorum, ancak herhangi bir harici kitaplık kullanabilirsiniz) için

:

Base64.Decoder decoder = Base64.getUrlDecoder(); 
String src = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImV4cCI6IjEzMDA4MTkzODAifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.2GpoV9q_uguSg0Ku6peI5aZ2qBxO5qOA42zaS25gq_c"; 
String[] parts = src.split("\\."); // Splitting header, payload and signature 
System.out.println("Headers: "+new String(decoder.decode(parts[0]))); // Header 
System.out.println("Payload: "+new String(decoder.decode(parts[1]))); // Payload 

ve çıkışı geçerli:

Headers: {"alg":"HS256","typ":"JWT","exp":"1300819380"} 
Payload: {"sub":"1234567890","name":"John Doe","admin":true} 

exp nitelik 16 january 2016 karşılık gelen, 1300819380 ayarlanmış olduğunu da unutmayınız.

7

Bunu yapmak için daha iyi bir yaklaşım var. JWT Exception işleyici nesnesini görüyorsanız .

nedenle istemler kolayca bu nesne üzerinden ekstre olabilir başlığını, istemler ve mesaj, yani E ExpiredJwtException amacıdır e.getClaims().getId() -: ExpiredJwtException, expection nesnesi aşağıdaki içerir.

ExpiredJwtException consturct şu şekilde olmaktadır: -

public ExpiredJwtException(Header header, Claims claims, String message) { 
     super(header, claims, message); 
} 

Örnek: -

try{ 
     // executable code 
    }catch(ExpiredJwtException e){ 
     System.out.println("token expired for id : " + e.getClaims().getId()); 
    } 
İlgili konular