我想在worklight中使用JsonStore保护实现应用程序我想根据登录用户存储密码,并将这些密码添加到WL.JSONStore.init(collections,options)
中的选项中。数据对象data={}
;
如何提取密码保存WL.JSONStore.init(collections,options)
选项对象,以便为其余功能进行api调用?
答案 0 :(得分:1)
您有两种选择(虽然我不是安全专家):
每次打开应用程序时,请用户使用应用程序(以及JSONStore)输入密码,然后在WL.JSONStore.init方法中检查密码(如果密码正确,商店将打开,否则,该方法将失败)。
因此,用户第一次打开应用程序时,您会存储密码,每次用户打开应用程序时,您都会检索密码并将其传递给WL JSONStore。如果用户想要更新密码(例如,您要遵循安全策略),则必须更新密钥链中的密码。
当然,如果你是混合型,你需要某种Cordova插件来添加,读取,更新,重置钥匙串中的密码,这样你就可以通过JavaScript进行这些操作。
希望它有所帮助!
答案 1 :(得分:1)
我对这个问题的看法:
将密码存储在设备中确实不是一个好习惯。
还有一个额外的问题,即用户名和密码来自哪里?注册(而不是登录)何时发生?这是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。