在CakePHP 2中登录了登录

时间:2016-01-07 18:45:41

标签: session php-5.3 cakephp-2.x

我有一个很大的问题:

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

但最奇怪的是,这不是唯一发生的项目。它出现在另一个项目中,它们共享相同的规范,以及自定义的Authenticate组件(但它只与自己项目的用户交叉)

我在这里有点迷失,因为我检查了发送的cookie(只有蛋糕会话ID)并且它们没问题且匹配会话文件。

那么,任何线索可能是什么问题?我甚至不知道从哪里开始看。可以在Auth上吗?还是会话?还是缓存?

平台规格:

  • PHP 5.3
  • Cakephp 2.5(不是100%肯定,但它大约是2.4和2.6)
  • IIS7
  • SQL Server 2014 DB

修改

这是我的自定义身份验证方法。请不要担心这种方法的编码错误,因为我必须尽快使其工作(很快就会解决)。

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;
}

0 个答案:

没有答案