7

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

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

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

我计划这样的事情:

  • 从客户端发送用户名并传递给服务器
  • 将会话 ID 从服务器返回给客户端
  • 将会话 ID 存储到客户端(本地存储)
  • 在每个请求中将该令牌发送到服务器并在服务器端进行验证。

如何在后端做到这一点?对于登录,我可以使用 Codeigniter Ion Auth 库登录方法并获取 Codeigniter (PHP) 会话 ID。在第二个请求中,当用户发送一些实际数据和 sessoin id 时,如何验证会话 id?还是为移动应用身份验证构建全新的登录功能比尝试使用现有功能(Codeignitre Ion Auth 库)更好?

非常欢迎所有想法和建议!

4

2 回答 2

1

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

您可以使用 Hooks 做到这一点:http: //ellislab.com/codeigniter/user-guide/general/hooks.html

使用预控制器挂钩。

为了轻松管理 API 请求,请使用 HTTP 代码

  • 404 : 未找到项目(如 /client/:id)
  • 500:服务器有问题
  • 401:没有令牌
  • 403:这个令牌没有被授权访问这个资源(就像一个简单的用户想要访问管理员的东西)

您在这里拥有所有代码:http ://en.wikipedia.org/wiki/List_of_HTTP_status_codes

当您可以更轻松地使用复杂的库时,请避免使用它。钩子对我来说是最好的。

我使用 NodeJS,概念与 Express 中间件相同。

于 2013-06-09T09:50:03.547 回答
0

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

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

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

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

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

于 2013-09-29T04:53:26.593 回答