2011-09-09 15 views
7

我打算构建一个包含2个部分的系统: 1. PHP网站(CakePHP)。 2.移动应用程序(Android & iPhone)。Android应用程序的身份验证模型

用户必须与USR & PWD用我的系统(网络和移动应用程序)登录。但是我没有很多用户身份验证的经验。我应该存储什么:usr & pwd,令牌字符串。我想为我的系统(Web和移动应用程序)找到一个“用户身份验证模型”。

有没有人有关于用户认证的经验。任何人都知道如何实现这一点?任何示例代码?帮我PLZ :)

回答

13

这是我们为我们的应用程序一样,

  1. 首先我们发送一个用户名和密码,从我们的应用程序的服务器。

  2. 在服务器上,他们进行认证的凭证,并返回其是请求令牌和sucess标志的组合的响应。

  3. 在我们的应用中,我们检查成功标志。如果它设置为true,我们保存请求令牌并将其用于所有下一个向服务器发出的请求。

  4. 现在,当服务器收到请求,它会检查数据库,看看用户是否有此令牌。 如果有,它会检查最后一次请求的时间(这是为了处理用户登录超时的情况)。如果当前时间和最后一次请求时间之间的差异大于您设置的限制,则您将响应应用程序需要重新登录请求来生成新令牌。否则,您继续请求并回复结果。

    这就是我的工作场所的服务器端人员如何做到这一点。我在客户端工作。但这基本上是做了什么。

编辑:关于令牌。 它基本上是一个随机生成器方法生成的32个字符的字符串。因此,当用户发送登录请求并且登录成功时,我们使用生成器方法创建一个令牌,并将其作为用户请求令牌以及当前时间和日期存储到我们的服务器数据库中。

所以当用户发送另一个请求到ther服务器时,我们首先获取令牌并检查用户是否存在该令牌。如果有,那么下一个检查是看看这是否是一些旧的请求令牌。所以我们用保存在数据库中的时间来检查当前时间。如果请求在限制之前发送(例如5分钟),则我们用当前时间更新数据库中的最后一个请求时间,并将结果返回给客户端。

使用此方法,您可以通过检查令牌和上次请求时间来为每个请求执行身份验证。

假设您希望您的应用程序在所有时间都登录,直到用户明确注销为止。在这种情况下,您不需要检查每个请求时间。您只需将请求令牌保存在客户端设备上。当用户注销时,从客户端删除令牌。所以他将被要求下次登录,因为他没有令牌。在这种情况下,保存客户端设备上的请求令牌比保存用户名和密码要安全得多。

这里有很多函数用于生成随机令牌。

+0

感谢您的帮助:) 您是否有其他选择用户认证模式?我想知道所有选项:) –

+0

这就是我们通常所做的。那么也许别人会回答其他选择。身份验证系统根据需求不断发展 – blessenm

+0

您能否帮助我了解一下令牌如何工作?每次用户登录时,是否需要在服务器端生成令牌? –

相关问题