在Swing中,密码字段具有getPassword()(返回char[])方法而不是通常getText()(返回String)方法.同样,我遇到了一个不使用String来处理密码的建议.
为什么String在密码方面会对安全构成威胁?使用感觉不方便char[].
我正在寻求JWT在我的应用程序中实现,我正在通过以下参考进行一些研发:https://stormpath.com/blog/jwt-java-create-verify.generateToken()当我尝试verifyToken()通过提取声明集时,我成功地能够实现该方法.我不明白apiKey.getSecret()从哪里来.你能指导我吗?
以下代码供参考:
public class JJWTDemo {
private static final String secret = "MySecrete";
private static String generateToken(){
String id = UUID.randomUUID().toString().replace("-", "");
Date now = new Date();
Date exp = new Date(System.currentTimeMillis() + (1000*30)); // 30 seconds
String token = Jwts.builder()
.setId(id)
.setIssuedAt(now)
.setNotBefore(now)
.setExpiration(exp)
.signWith(SignatureAlgorithm.HS256, secret)
.compact();
return token;
}
private static void verifyToken(String token){
Claims claims = Jwts.parser().
setSigningKey(DatatypeConverter.parseBase64Binary(apiKey.getSecret()))
.parseClaimsJws(token).getBody();
System.out.println("----------------------------");
System.out.println("ID: " + claims.getId());
System.out.println("Subject: …Run Code Online (Sandbox Code Playgroud) 我需要在 mi API 中使用 JWT,IDE 告诉我 .signWith() 方法已弃用。到目前为止,我使用 @Deprecated 注释,但我认为这不是很好的做法。
这是我的示例代码:
@Deprecated
public String generateToken(UserDetails userDetails) {
return Jwts.builder().setSubject(userDetails.getUsername()).setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 10))
.signWith(SignatureAlgorithm.HS256, KEY).compact();
}
Run Code Online (Sandbox Code Playgroud) java ×3
char ×1
deprecated ×1
jjwt ×1
passwords ×1
security ×1
spring ×1
spring-boot ×1
string ×1