为基于javascript的移动应用实现持久登录的正确方法?

时间:2016-01-02 21:04:35

标签: javascript cordova mobile jwt

我目前正在开发一款主要使用HTML和CSS构建的移动应用,然后使用phonegap运行。部分应用程序要求用户登录并与后端同步数据。我希望它以这样的方式完成:一旦用户登录他们的设备,他们将保持登录,直到他们手动注销;他们只需要输入一次信息。我在使用本机代码时发现了一些不错的信息,但并不适用于我的情况。

现在,我不确定如何以安全的方式正确地做到这一点。我的第一个想法是正常处理登录,然后传回一个密码,该密码既存储在设备的本地存储中,也存储在用它验证的用户下的数据库中。在后续请求中,它将传递此信息并允许访问具有匹配密码的用户。我的问题是这是否足够安全以实用?

我还做了一些研究,看来JWT与我正在寻找的相似?我对这种方法的两个担忧是:

  1. 如何使用此方法维护持久登录。
  2. 是什么阻止某人欺骗连接?根据我的知识,每个请求都会传递一个秘密字符串来验证它。但是,由于我的应用程序中的代码对于知道如何访问它的人来说是可见的,这是为了防止他们了解秘密是什么并欺骗连接?
  3. 我认为我对JWT的问题是由于我误解了它的工作原理的一些基础知识。如果它满足我想要做的事情,我宁愿使用像JWT这样的更标准化的流程,而不是编写我自己的解决方案。

    我是否正确地走上了正确的道路,或者我是否已离开基地?

1 个答案:

答案 0 :(得分:0)

你的想法是正确的,这就是通常的做法。它是cookie和会话概念的组合。一旦用户登录,就在服务器上启动“会话”。会话由字符串(例如md5格式)标识并传递回客户端。该字符串保存在客户端的cookie中,并且由于cookie信息在每个HTTP请求中发送,服务器可以将该请求分配给会话,从而将您的用户视为已登录。以后的注销过程基本上包括删除您的cookie ,和/或向服务器发送请求以删除会话对象。 在大多数HTTP服务器端框架中,都有一个用于会话的API,因此您不必重新发明轮子。是的,它足够安全,因为您通常不会将安全性建立在这个传输层上,而是通过引入https在较低层上。