在Cordova

时间:2016-04-03 18:25:07

标签: sqlite cordova ionic-framework local-storage

修改 查看我的answer了解解决方案

目前正在使用Ionic处理混合应用程序,其中需要存储身份验证令牌以保持用户登录,并且还保证在App上下文之外无法访问此数据。

当然,有很多解决方案可以完成这项任务,每个解决方案都有不同的优点和缺点,因此找到适合的技术会让我感到困惑。

我一直在关注angular-localForage和其他候选人:

localStorage的

  • 小数据的明显选择。
  • 当系统内存不足时,数据会在iOS中被删除。

索引资料

WebSQL(SQLite)

  • 显然是小数据和体面支持的一个很好的选择(WebSQL suppport),但它已被弃用。

SQLite的

  • Cordova中的iOS存在相关问题。

LokiJS

  • 对于这种情况看起来有点过分,但绝对是一个强有力的候选人。是否应该注意任何安全问题(因为我在本地读取它会将数据保存到JSON文件中)?

PouchDB + SQLite

  • 嗯,它是一个与CouchDB或Couchbase数据库一起工作的JS客户端,它也可以与SQLite一起使用,但我只需要存储一个令牌..

显然,Android / iOS交叉兼容性的最佳选择应该具有讽刺意味的是WebSQL,但不再开发,我必须保证长期支持。

所以我的问题是:我是否还有其他选项可以安全存储访问令牌?如果不是,那么上述哪一个应该是完成这项任务的最佳选择?

4 个答案:

答案 0 :(得分:5)

在做了一些研究后,我将分享我的结论。

有趣的是,以上候选人都不适合安全存储访问令牌。该方法应该使用Android(共享首选项)和iOS( Keychain )的本机解决方案。

在Ionic的特定情况下,可以使用Cordova的broadcaster plugin与Native进行通信,以便您可以访问存储的数据。

答案 1 :(得分:0)

SQLite是最佳选择,因为DB的内容将被加密和保存。本机应用程序也依赖SQLite来保存数据。 为了使SQLite更容易使用CRUD,我创建了一个包装器库。请检查here

答案 2 :(得分:0)

唯一安全的方法是使用“httponly cookie”。但是,自 2020 年 4 月以来,Apple 使用 wkwebview 存在 cookie 问题。

答案 3 :(得分:-1)

转到LocalStorage,这是存储的最佳方式