Session 在CakePHP 2中,登录名被划掉了

Session 在CakePHP 2中,登录名被划掉了,session,php-5.3,cakephp-2.x,Session,Php 5.3,Cakephp 2.x,我这里有一个大问题: 在一个CakePHP项目中,我有一个双步骤登录,用户登录公司的Active Directory,在成功检查凭据后,他们会在DB上再次检查,这样只有特定的人才能进入该站点。问题是,最近,用户可以看到另一个用户的信息,就好像他们是用另一个人的凭据输入的一样。最糟糕的是,并非所有部分都有相同的登录名。有时人A可以在第一页看到自己,但在第二页他可以看到自己是B,在第三页他看到自己是C 但最奇怪的是,这不是唯一发生的项目。它也出现在另一个共享相同规范的项目和自定义身份验证组件上(但它

我这里有一个大问题:

在一个CakePHP项目中,我有一个双步骤登录,用户登录公司的Active Directory,在成功检查凭据后,他们会在DB上再次检查,这样只有特定的人才能进入该站点。问题是,最近,用户可以看到另一个用户的信息,就好像他们是用另一个人的凭据输入的一样。最糟糕的是,并非所有部分都有相同的登录名。有时人A可以在第一页看到自己,但在第二页他可以看到自己是B,在第三页他看到自己是C

但最奇怪的是,这不是唯一发生的项目。它也出现在另一个共享相同规范的项目和自定义身份验证组件上(但它仅与自己项目的用户交叉)

我在这里有点不知所措,因为我检查了发送的cookies(只有蛋糕会话id),它们都正常并且与会话文件匹配

那么,有什么线索可以说明问题所在吗?我甚至不知道从哪里开始找。可能是在Auth上吗?还是会议?还是缓存

平台规格:

  • PHP5.3
  • CakePHP2.5(不是100%确定,但大约是2.4和2.6)
  • IIS7
  • SQL Server 2014数据库
编辑

这是我的自定义身份验证方法。请不要担心这个方法的糟糕编码,因为我必须尽快让它工作(很快就会修复它)


请发一些代码。(例如,用于产生奇怪结果的操作的控制器方法、您的身份验证配置和登录方法等)您是否尝试过调试
$this->UsuarioModel->obtener_usuarios(数组('login'=>$request->data['Usuario']['login'])
,以确保它持有与
Usuario.login
匹配的
Usuario.id
,我已经尝试过了,但是当登录被交叉时,变量
$usuario
保存了系统认为已登录的用户的信息,而不是实际的用户信息。我已经在Apache服务器上安装了该站点,目前运行良好。可能是关于IIS的,但我不是100%确定。这很奇怪。您是否在代码中的某个地方通过
CakeSession::write()
,向
Auth
Auth.User
编写代码?不,只使用了一次,通过
CakeSession::read('Auth.User.usuario')
从模型中读取用户,但这是我唯一一次这样使用它
public function authenticate(CakeRequest $request, CakeResponse $response)
{

    CakeSession::delete('AuthError');
    if($request->data['Usuario']['login'] == '' || $request->data['Usuario']['contraseña'] == '')
    {
        CakeSession::write('AuthError', __("Usuario o contraseña inválidos"));
        return false;
    }
    $datasource = ConnectionManager::getDataSource('active_directory');
    $dominio = isset($request->data['Usuario']['dominio']) ? strtoupper($request->data['Usuario']['dominio']) : 'INTERNAL';
    $host = strtolower($request->data['Usuario']['dominio']).'.'.$datasource->config['host'];   //imsglobal.com
    $port = $datasource->config['port'];

    $enlace = ldap_connect($host, $port);

    $check = @ldap_bind($enlace,$dominio."\\".$request->data['Usuario']['login'],$request->data['Usuario']['contraseña']);
    // debug($check);

    ldap_close($enlace);
    if($check)
    {
        $this->UsuarioModel = ClassRegistry::init('Usuario');
        $usuario = $this->UsuarioModel->obtener_usuarios(array('LOGIN' => $request->data['Usuario']['login']));
        if(!empty($usuario))
        {
            return array('id' => $usuario[0]['id'], 'usuario' => $usuario[0]['usuario']);
        }
        else
        {
            CakeSession::write('AuthError', __("El usuario ingresado no se encuentra registrado en el sistema. Por favor contacte a un administrador"));
        }
    }
    else
    {
        CakeSession::write('AuthError', __("Usuario o contraseña inválidos"));
    }
    return false;
}