如何在Titanium Appcelerator App中保存持久值

时间:2014-10-26 03:15:35

标签: javascript android titanium titanium-mobile appcelerator-mobile

我正在尝试找出在使用Titanium构建的Android移动应用中安全保存用户信息的最佳方法。我对最好的方法感到困惑。

似乎最简单的方法是将其保存为财产。有点像...

                Ti.App.Properties.setString('user_name', user.name);
                Ti.App.Properties.setString('user_id', user.id);
                Ti.App.Properties.setString('user_sessionid', user.session_id);

这看起来很棒,因为这些属性是持久的等等。但是,根据我在其他地方读到的内容,我不确定这是否是安全/最佳方式。

另一种方法是将其保存为全局属性。

                Alloy.Globals.userid = user.id;
                Alloy.Globals.user_name = user.name;

这当然不是持久性的,因此用户必须每次登录。我很想知道其他人在做什么,以及最佳做法是什么。任何见解将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

我建议你看看sculejs(https://github.com/dan-eyles/sculejs) - 它是javascript的noSQL数据库,其中一个核心功能是加密保存的数据并保证其安全。

它不仅仅是您希望存储的小设置,而且绝对可以满足您的需求。

您还可以对要在应用设置中存储的字符串使用某种哈希,并以您在问题中提到的方式加密/解密您存储的数据。

答案 1 :(得分:0)

毫无疑问,这个模块:https://github.com/benbahrenburg/Securely

是安全存储“小”数据的最佳方式,适用于iOS和机器人。

//Require the securely module into your project
var securely = require('bencoding.securely');

// AES encryption
var plainTextString = "this is a clear text example string";
var usingGUID = securely.generateDerivedKey(Ti.Platform.createUUID());  
Ti.API.info("Derived key using GUID = " + usingGUID);
var aesEncryptedString = stringCrypto.AESEncrypt(usingGUID,plainTextString);
Ti.API.info("aesEncryptedString =" + aesEncryptedString);

// later on - decrypt it
var aesDecryptedString = stringCrypto.AESDecrypt(usingGUID,aesEncryptedString);
Ti.API.info('aesDecryptedString=' + aesDecryptedString);

模块中还有DES(sha256,sha512)加密方法供您选择。