我创建了一个Web服务,用户可以在其上登录发送oauth令牌。作为响应,此Web服务返回PHPSESSID cookie以保持用户登录。
但是,如果您多次登录,则每次都会生成一个新ID。例子:
所有这4个ID都有效。
是否有任何方法可以使每个用户的此sessid唯一?因此,例如,当生成ID#4时,之前的3将被丢弃。然后我可以处理403错误或其他什么。
另一方面,第二个问题:
是否可以延长此PHPSESSID令牌?
答案 0 :(得分:1)
如果你想要,那么最好使用你自己的cookie而不是php会话。
当有人登录时,您需要生成随机Cookie密钥,我会将该随机Cookie密钥称为cookie_id。
然后你需要将它与连接到的user_id一起存储在数据库中,这样你就可以在数据库中创建一个名为sessions的新表,包含cookie_id和user_id字段(user_id需要是唯一的),或者你可以扩展你的用户表与cookies_id字段。
使用db中的相关用户保存cookie_id值后,您将通过cookie将该cookie_id提供给该用户。
您可以使用他的cookie_id验证登录用户。 注销时,cookie中的cookie将为null。 当另一次登录时,新的cookie_id将被写入db中的旧cookie_id。 就是这样
您还可以使用expire参数设置Cookie的周期:http://php.net/manual/en/function.setcookie.php
为了更安全,您可以在一段时间后使用cronjobs从db中删除cookie ID。 (您需要存储登录日期才能这样做)