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