Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phonegap&;Jquery移动应用程序使用Codeigniter Ion Auth后端进行登录_Codeigniter_Authentication_Cordova_Jquery Mobile_Ion Auth - Fatal编程技术网

Phonegap&;Jquery移动应用程序使用Codeigniter Ion Auth后端进行登录

Phonegap&;Jquery移动应用程序使用Codeigniter Ion Auth后端进行登录,codeigniter,authentication,cordova,jquery-mobile,ion-auth,Codeigniter,Authentication,Cordova,Jquery Mobile,Ion Auth,我已经有了CRUDWeb应用程序,它是使用Codeigniter PHP框架和Ion Auth身份验证库(用于Codeigniter)构建的。因此,用户需要登录才能使用网站等 现在我正在使用Phonegap和jQuery mobile构建一个小型移动应用程序,它使用相同的后端。后端有一个“类似REST”的api,用于处理来自移动客户端的所有ajax请求 我应该如何处理此移动应用的用户身份验证?我希望尽可能多地使用现有的后端代码库 我正在计划这样的事情: 从客户端向服务器发送用户名和密码 将会话

我已经有了CRUDWeb应用程序,它是使用Codeigniter PHP框架和Ion Auth身份验证库(用于Codeigniter)构建的。因此,用户需要登录才能使用网站等

现在我正在使用Phonegap和jQuery mobile构建一个小型移动应用程序,它使用相同的后端。后端有一个“类似REST”的api,用于处理来自移动客户端的所有ajax请求

我应该如何处理此移动应用的用户身份验证?我希望尽可能多地使用现有的后端代码库

我正在计划这样的事情:

  • 从客户端向服务器发送用户名和密码
  • 将会话id从服务器返回到客户端
  • 到客户端的存储会话id(本地存储)
  • 将每个请求中的令牌发送到服务器,并在服务器端验证它
如何在后端端做到这一点?对于登录,我可以使用Codeigniter Ion Auth库登录方法并获取Codeigniter(PHP)会话id。在第二个请求中,当用户发送一些实际数据和sessoin id时,如何验证会话id?或者,为移动应用程序身份验证构建全新的登录功能比尝试使用现有功能(Codeignitre Ion Auth library)更好吗


欢迎提出所有意见和建议

我认为最好的解决方案就是在控制器和请求之间放置一个中间件

您可以使用挂钩来实现这一点:

使用预控器挂钩

为了方便地管理API请求,请使用HTTP代码

  • 404:未找到项(如/client/:id)
  • 500:服务器有问题
  • 401:没有令牌
  • 403:此令牌无权访问此资源(如希望访问管理员资料的简单用户)
这里有所有代码:

如果可以更轻松地使用复杂的库,请避免使用它。这些钩子对我来说是最好的


我使用NodeJS,其概念与Express Middleware相同。

我使用phonegap和jQuery mobile开发了相同类型的移动应用程序,并使用MySQL db作为我的网站后端,该网站位于node js平台,但使用API访问所有功能的总体思路是相同的

API调用服务器进行登录和所有其他操作,如获取数据、向服务器发送数据等

如果您在服务器端准备好了API,那么就完成了,您只需调用该API即可完成所有工作。首先,您可以调用API的登录函数并传递用户名和密码(如果成功),然后返回带有用户id的成功令牌,您可以将其存储在本地移动数据库中。我已经将SQLite用于移动存储

然后,在每个其他请求上,我都使用该令牌进行身份验证,并在服务器上执行操作

您还可以在我的应用程序中添加自动登录功能,因此无需每次登录