我使用php-sessions检查用户是否登录到我的应用程序。是否比仅将用户ID保留在会话中并对照数据库(如果用户已登录)进行检查来提高性能?
如果密码更改了,或者我想阻止/注销用户,更改数据库记录很容易,但是当它存在于会话中时,我可以这样做吗?怎么样?
答案 0 :(得分:0)
我使用php-sessions检查用户是否登录到我的应用程序
我不确定到底是什么样子-听起来很恐怖。您可能已经破坏了会话安全模型,或者每次想查找登录者时都必须强制使用会话数据。当然,最好维护活动会话和用户标识符的列表,支持自定义会话处理程序(出于触发目的-不适用于通用存储基板),但您似乎暗示您没有这样做。
如果密码更改
您不能在会话中保留用于验证会话身份的密码。
答案 1 :(得分:0)
您可以同时使用。
将会话变量用作第一次检查,以便您立即拒绝未设置会话变量的任何请求。这样可以节省对随机敲门请求进行昂贵的数据库检查。
但是,如果已设置,则仍然必须进行数据库检查,以查看用户的登录会话是否仍然有效。用户登录时,创建一个随机令牌并将其存储在会话变量和数据库中。处理新请求时,请检查会话变量是否与数据库中的变量匹配。如果管理员要强制用户注销,则只需使该数据库记录无效。