用户登录并使用Phonegap应用程序保持登录状态


User login and stay logged in with phonegap app?

我正在使用Phonegap为我的网站构建一个移动应用程序,并且正在使用PHP Codeigniter框架来创建我的REST API。我需要允许用户登录应用程序并检索信息,但我对身份验证部分有点困惑。

现在这就是我的想法:

  • 用户使用用户名/密码登录(他们将使用HTTPS发送到服务器)
  • 我的 API 将检查数据库以查看用户是否存在
  • 如果用户存在,则生成一个随机字符串(令牌)并将其发送回客户端
  • 在客户端(移动应用程序)上,将令牌存储在某个位置
  • 每次用户从服务器请求信息时,发送令牌进行验证

决定使用令牌方法,因为我需要允许用户在首次登录后保持登录状态(我读到在客户端存储用户名/密码是不好的)。

所以这是我的问题,

我的方法有效/安全吗?如果是这样,令牌如何存储在phonegap上?本地存储能完成这项工作吗?

有没有更好更简单的方法?

是否有库可以帮助我更容易/更快地做到这一点? 尤其是在构建 REST API 时?

最后,我听说过OAuth2,但这仅适用于您想要允许第三方登录(谷歌,Facebook等)的情况吗?我已经研究了一下,似乎有一个用于PHP的OAuth和用于Phonegap的OAuth。如果我实现了这一点,我是否需要在我的 REST API 和 phonegap 端执行此操作?

我对这一切相当陌生,所以任何带有示例的解释都会有所帮助。

我建议使用你的令牌方法。每次应用程序启动时,如果未设置 http 请求并将令牌存储在本地存储中,请检查是否设置了用户令牌的本地存储。这是示例代码

function validateUser(username,password){
  //get the user token from local storage
    if(window.localStorage.getItem('usertoken')==null){
           //set up the http request
            $.ajax({
              url:'www.example.com/login.php',
              method:post,
              data:{'username':username,'password':password}
              success:function(data){
                 //set the token in localstorage
                 window.localStorage.setItem('usertoken',data);
              }
           });
       }
      }  
    }