Java 如何检查是否创建了身份验证令牌并将其保存在cookie中
我的要求是,当用户登录时,RESTWeb服务必须发送一个包含userid的cookie,之后他必须创建一个身份验证令牌并将其保存在数据库存储中,并且必须将令牌保存在cookie中。稍后,如果他再次登录,web服务必须检查令牌是否已创建,如果已创建,则从db获取令牌或创建新令牌。您能检查并让我知道身份验证令牌是否安全创建,我的问题是如何检查令牌是否已提前创建,以及如何保存在cookie中Java 如何检查是否创建了身份验证令牌并将其保存在cookie中,java,hibernate,rest,jpa,cxf,Java,Hibernate,Rest,Jpa,Cxf,我的要求是,当用户登录时,RESTWeb服务必须发送一个包含userid的cookie,之后他必须创建一个身份验证令牌并将其保存在数据库存储中,并且必须将令牌保存在cookie中。稍后,如果他再次登录,web服务必须检查令牌是否已创建,如果已创建,则从db获取令牌或创建新令牌。您能检查并让我知道身份验证令牌是否安全创建,我的问题是如何检查令牌是否已提前创建,以及如何保存在cookie中 private static byte[] getSalt() throws NoSuchAlgorithmE
private static byte[] getSalt() throws NoSuchAlgorithmException {
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
byte[] salt = new byte[16];
secureRandom.nextBytes(salt);
return salt;
}
public static String getHashWithSalt(String userid) {
String token = null;
try {
MessageDigest msgDigest = MessageDigest.getInstance("SHA-256");
byte[] salt = getSalt();
msgDigest.reset();
msgDigest.update(salt);
msgDigest.update(userid.getBytes());
byte byteData[] = msgDigest.digest();
System.out.println("msgDigest value --> " + byteData.toString());
token = toHexString(byteData);
System.out.println("token --> " + token);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return token;
}
// This method converts the byte Array to Hexa String format
private static String toHexString(byte[] byteData) {
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < byteData.length; i++) {
String hex = Integer.toHexString(0xFF & byteData[i]);
hexString.append(hex);
}
return hexString.toString();
}
我不确定我是否正确理解了这个问题: 如何检查令牌是否已提前创建 如果您将令牌存储在数据库中,那么当您从cookie接收令牌时,可以根据数据库中的值对其进行验证。如果在cookie中接收的令牌已经存在于数据库中,则它已经被创建 至于如何将其保存在cookie中,当您首次创建cookie时,只需设置适当的过期日期。如果MaxAge设置为负值,则浏览器会话关闭后,cookie将自动删除