我正在使用Guava LoadingCache来缓存对外部存储的auth请求。关键是对象身份验证:通过部分密钥使Guava缓存失效
public class Auth {
private String username;
private String password;
public boolean equals(Object o);
}
并且响应是HttpStatus,OK或FORBIDDEN。
当外部存储中的username
的密码发生变化时,我需要删除缓存记录username
,但问题是密码只存储为散列值,而不是原始值,所以我不能仅仅构造新的验证对象为无效,如:
cache.invalidate(new Auth(<username>, <password>));
我怎么能无效缓存记录,只用username
价值?
为什么不使用'Auth'作为密钥? – mfulton26
原因我不知道原始密码,只有存储的MD5哈希值。并且在缓存中我使用原始密码进行验证,因此它们不相等。 – mv200580
我觉得很愚蠢,我的意思是,“为什么不使用'用户名'作为关键”? – mfulton26