我想在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