我正在使用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);
}
});
}
}
}