我正在使用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