禁止用户同时从两个或多个Android设备登录

时间:2015-05-04 08:08:21

标签: java php android session backend

我们说我的Android应用程序具有用户登录功能和基于PHP的后端服务器。当用户使用相关信息填写必填字段(例如姓名和电子邮件)并按"登录"按钮,正在向后端服务器发出请求。现在让我们说用户已成功登录。

我的问题是,确实存在任何类似于web的常用机制/解决方案/设计模式

  

会话

Android应用程序和服务器端之间的

是为了实现登录/注销等功能,防止用户同时使用同一帐户登录等等?

2 个答案:

答案 0 :(得分:1)

为什么要使用类似于php会话的东西?改为使用php会话!

session_start();
$sess_id = session_id();

将此ID提供给您的客户端,并确保它出现在客户端应用程序向您的服务器发出的每个请求中。

以下是您通过ID加载会话的方式:

session_id("your_client_session_id");
session_start();

除了浏览器使用cookie来存储session_id之外,它基本上与web使用相同。

然后,如果您在客户端应用程序中使用org.apache.http,则应该能够使用org.apache.http.cookie。 这样您就可以在cookie中设置PHP_SESSID,并且您的应用程序将在每个请求中自动发送它。

答案 1 :(得分:0)

由于应用程序的不同实例可以通过相同的远程服务(PHP后端)进行身份验证,因此它可以成为跟踪身份何时进行身份验证以及从哪个设备进行身份验证的实现的一部分。然后,您需要一种方法来跟踪用户在给定会话中的活动时间(例如,只要它运行,就会以一定间隔从应用程序发送“ping”)。

使用此信息(上次登录,最后一次ping),可以准确确定身份是否具有活动会话,并拒绝访问具有相同身份的后续身份验证尝试。

由实现如何定义活动会话。只要应用程序在前台,只要用户与其保持交互不超过某个空闲时间阈值等,它就可以是活动的。点是记录并收集所有信息服务器端的会话。