我正在尝试创建一个让用户登录的系统(比如记得我检查过)。好的我有这样一张桌子:
// cookies
+---------+-------------------------+------------------+------------+------------+
| id | email | cookie | date_time | device |
+---------+-------------------------+------------------+------------+------------+
| int(11) | varchar(50) | varchar(128) | int(11) | |
+---------+-------------------------+------------------+------------+------------+
| 1 | jack_2009@gmail.com | ojer0f934mf2... | 1467204523 | |
| 2 | peter.zm@yahoo.com | ko4398f43043... | 1467205521 | |
| 3 | matrix_john23@gmail.com | 34fjkg3j438t... | 1467205601 | |
| 4 | peter.zm@yahoo.com | 0243hfd348i4... | 1467206039 | |
+---------+-------------------------+------------------+------------+------------+
如您所见,此用户peter.zm@yahoo.com
已通过两个不同的设备登录:
| 2 | peter.zm@yahoo.com | ko4398f43043... | 1467205521 | |
| 4 | peter.zm@yahoo.com | 0243hfd348i4... | 1467206039 | |
因此email
列不是唯一的,每个设备都有自己的行。
我的问题:如何填写device
列?
为什么我需要确定设备?因为当用户删除浏览器的cookie时,我的网站会将他识别为新用户,并在上面的表格中为他创建一个新行。所以过了一会儿,表格中会有一些冗余的行。
例如:想象peter
只有两个设备(笔记本电脑,手机)。他上面有两排。好的,他删除了浏览器的cookie并登录。会发生什么?我的网站在上面的表格中创建了一个新行。现在peter
在上方的表格中有3行(而他只有两个设备)。所以肯定这三行中的一行是多余的。这就是我需要检测设备以删除冗余行的原因。
答案 0 :(得分:1)
上次与您的应用程序交互时使用User Agent字符串怎么样?
作为额外的纵深防御安全措施,您还可以验证用户代理是否与之前使用的用户代理匹配,以减轻会话劫持。请注意,任何浏览器或操作系统升级都会使该设备上的“记住我”失效。
作为旁注,您最好不要使用唯一ID而不是电子邮件地址,因为这样可以在将来更新用户的电子邮件时更容易。
答案 1 :(得分:0)
使用网络身份验证api或凭据api