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

为基于javascript的移动应用程序实现持久登录的正确方法?,javascript,cordova,mobile,jwt,Javascript,Cordova,Mobile,Jwt,我目前正在开发一个移动应用程序,它主要是用HTML和css构建的,然后用phonegap运行。应用程序的一部分要求用户登录并与后端同步数据。我希望这样做,一旦用户登录到他们的设备,他们将保持登录,直到他们手动注销;他们只需输入一次信息。在使用本机代码时,我发现了一些不错的信息,但不太适合我的情况 现在,我不知道如何以一种安全的方式正确地完成这项工作。我的第一个想法是正常处理登录,然后传回一个密码,该密码存储在设备上的本地存储器中,以及使用该设备进行身份验证的用户下的数据库中。在随后的请求中,它将

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

现在,我不知道如何以一种安全的方式正确地完成这项工作。我的第一个想法是正常处理登录,然后传回一个密码,该密码存储在设备上的本地存储器中,以及使用该设备进行身份验证的用户下的数据库中。在随后的请求中,它将传递此消息并允许访问具有匹配密码的用户。我的问题是,这是否足够安全,可以实用

我也做了一些研究,看来JWT和我要找的东西很相似?我对这种方法的两个担忧是:

  • 如何使用此方法维护持久登录
  • 什么可以防止某人欺骗连接?据我所知,每个验证请求都会传递一个秘密字符串。但是,既然我的应用程序中的代码对知道如何访问它的人来说是可见的,那么如何防止他们了解秘密和欺骗连接呢
  • 我想我对JWT的问题是因为我误解了它的一些基本原理。如果它满足了我想要做的事情,我宁愿使用更标准化的流程,比如JWT,而不是编写自己的解决方案


    我是在正确的轨道上思考上述问题,还是我偏离了底线

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

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