我想在worklight中使用JsonStore保護實現應用程序,我希望根據登錄用戶存儲密碼並將這些密碼添加到WL.JSONStore.init(collections,options)
中的選項中。數據對象data={}
中的其餘細節;如何在JsonStore Worklight 6.2中實現密碼保護安全性?
以及如何提取密碼保存WL.JSONStore.init(collections,options)
選項對象用於使API調用其餘的功能?
我想在worklight中使用JsonStore保護實現應用程序,我希望根據登錄用戶存儲密碼並將這些密碼添加到WL.JSONStore.init(collections,options)
中的選項中。數據對象data={}
中的其餘細節;如何在JsonStore Worklight 6.2中實現密碼保護安全性?
以及如何提取密碼保存WL.JSONStore.init(collections,options)
選項對象用於使API調用其餘的功能?
我採取了一個問題:
存儲在設備中的密碼的確不是一個好的做法遵循。
還有一個額外的問題,用戶名和密碼來自哪裏?什麼時候註冊(而不是登錄)?這是IMO的重要信息。
在我的一個應用程序中,我初始化了一個JSONStore,並使用用戶的密碼對其進行了加密,並在集合中保存了用戶名。
這樣,下次用戶嘗試打開JSONStore(讀取:「登錄」)時,它將嘗試使用輸入的密碼執行此操作。如果此步驟成功,則會將輸入的用戶名與存儲的用戶名進行比較。如果此步驟也成功,則可以假定有效的登錄憑據。
var collections = {
userCredentials : {
searchFields : {
username: 'string'
}
}
};
var username, password;
username = $("#username").val();
password = $"("#password").val();
WL.JSONStore.init(collections, {password:password})
// first step is successful
.then(function() {
return WL.JSONStore.get("myCollectionName").find({username:username});
})
// second step is successful
.then(function(searchResult) {
if (searchResult[0].json.username == username) {
// valid login.
}
})
.fail(function() {
alert ("Invalid credentials, try again.);
})
注意上面的代碼是一個有點抽象和「通用」,你會需要處理所有種類的邊緣情況。
我強烈推薦徹底閱讀全部JSONStore documentation和training modules。
你有兩個選擇(雖然我不是一個安全專家):
問到使用的應用程序(並因此JSONStore)用戶每次打開應用程序,然後花時間去輸入密碼在WL.JSONStore.init方法中檢查密碼(如果密碼正確,商店將打開,否則該方法將失敗)。
因此,用戶打開應用程序中的第一次,你存儲密碼和每個用戶打開應用程序時,您找回密碼,並把它傳遞給WL JSONStore。如果用戶想要更新密碼(例如您有安全策略要遵循),則必須更新鑰匙串中的密碼。
當然,如果你去混合使用,你需要一些Cordova插件來添加,讀取,更新,重置鑰匙串中的密碼,這樣你就可以使用JavaScript進行這些操作。
希望它有幫助!
事實上,這與用戶每次輸入密碼時的第一個選項相同。但有些情況下用戶不需要(例如記住我的功能),我們需要將它存儲在設備的某個位置,最好的選擇是IMO,它是OS的安全存儲。 iOS Keychain是每個應用程序...所以,它不能從其他應用程序訪問(除非iOS或應用程序本身存在安全漏洞)。 – 2014-09-05 12:20:12
您可以在應用程序之間共享鑰匙串中的項目,還有一個稱爲簡單數據共享的Worklight功能,可以在文檔[此處](http://www-01.ibm.com/support/)上閱讀關於它的更多信息。 knowledgecenter/SSZH4A_6.2.0/com.ibm.worklight.dev.doc/devref/c_simple_data_sharing_overview.html)。 – cnandreu 2014-09-05 14:30:03