2011-09-05 82 views
0

我遇到了一个问题,当用户登录时,我给用户分配了他们的id,例如126.但是当我维护或删除一些被禁止的用户时,例如,用户标识126将从数据库中删除,但用户126在他的会话中仍然具有号码126。当我检测到我的数据库时,如何删除其会话内容?如何删除用户标识?谢谢。如何在codeigniter中同步数据库和会话?

+0

嗯,做一次检查,看看是否在会话中仍处于活动状态控制器在分配会话之前登录变量检查,如果没有,那么session_destroy&做一个头重定向到登录。 –

回答

0

对我来说听起来像是担心ID 126被阻塞,即使它被分配给新用户。

不应该是一个问题,导致在这些情况下(通常)以自动增量方式创建ID和DB(MySQL肯定,其他大多数人也可能)选择下一个更高的值到有史以来产生的最高值在这样的自动增量字段中的值。

因此,如果highes分配的值是1234,那么你就可以删除你想要什么,下一个值将是1235

所以你的问题是不是一个真正的问题,因为在我看来。

+0

但是当用户有会话ID 126时,服务器端会认为这是一个有效的用户ID,因为我在服务器端的会话中检查用户ID。所以,它很多有一些不可预知或奇怪的错误。 – Tattat

+0

会话ID将会是126 ...这是相当可预测的,因此会使您的身份验证机制非常脆弱。 – Raffael

+0

这意味着,当用户发出请求时,我需要再次查询db来检查是否有用户标识?如果有许多用户,它确实会花费很多。 – Tattat

0

有用户每次让你可以检查凭据的行动,那么踢用户从若已时间2级的解决方案,我能想到这一点,

1)存储在数据库中的用户凭据, 取缔。我不认为它

2)缓存在用户登录时,高速缓存应该是全球性的,因此禁止用户的会话,可以检查

相关问题