答案可能因服务器端是否启用而异,我的第一个想法是编写一个服务来调用服务器以检查最近登录的设备的 IMEI 是什么。问题是:因为我们无法设置此服务由于应用程序的性能问题,每秒都要调用服务器,解决这个问题的虎钳方法是什么?
问问题
50 次
1 回答
2
我通常所做的是在数据库中的用户记录中有一个会话标识符。登录会生成一个新的标识符,它需要伴随每个请求。当他们从第二个位置登录时,会生成一个新标识符。第一个位置现在将收到“您的会话已过期或您已从第二个位置登录”错误消息。
PHP 中的一个例子,因为我的大部分服务器端都是用 CakePHP 完成的。用户模型的简化:
User (
id INTEGER,
userid VARCHAR(32),
password VARCHAR(40), -- SHA1
key VARCHAR(40) -- SHA1 in size
)
密钥在我的登录方法中生成为:
$user['User']['key'] = sha1($user['User']['userid'] . time . rand(0, 1000));
这只是用户登录名的 SHA1 哈希(40 个字符宽)与当前纪元秒和 0 到 1000 之间的随机数连接。这将进入服务器上的数据库并返回给客户端。客户端在登录后将 ?key= 附加到每个请求。
这有帮助吗?
于 2013-10-14T15:57:40.320 回答