根據公司政策(和其他建議),我們不應該使用String類來處理密碼。因爲這些對象是不可變的,所以直到GC釋放它爲止,所以「內存檢查」可能會顯示一個尚未釋放的包含密碼的字符串。因此,替代方案是使用char [],而不再需要覆蓋它的內容。但是,使用inputText組件時,setter方法必須接收一個String。如何處理ADF Faces中的密碼字符串?
我有一個inputText的一樣:
<af:inputText value="{myBean.password}" secret="true"/>
而且
public class MyBean {
...
private transient char[] password;
...
public void setPassword(String password) {
this.password = password.toCharArray();
}
...
public void sumbit(ActionEvent e) {
...
//Wipe password
for(int i = 0 ; i < password.length ; i++) { password[i] = ' '; }
password = null;
}
}
正如你所看到的,仍然是一個包含密碼(setter方法的參數)的String對象,我不不知道如何處理這個價值。有什麼方法可以接收char []值嗎? ADF的週期是否考慮到這是一個密碼,應該做一些特別的事情?
這是一個服務器和調用CG不是一個好主意。
你可以使用它的轉換器嗎?我的意思是javax.faces.convert.converter – Leo
oh nevermind ...轉換器將轉換爲字符串... – Leo
爲什麼你不使用一些虛擬鍵盤或類似的東西? – Leo