我有一个很大的问题:
在CakePHP项目中,我有一个双步登录,用户登录公司的Active Directory,成功检查凭据后,再次检查数据库,以便只有特定的人才能进入该站点。问题是,最近,用户可以看到另一个用户的信息,就好像他们输入了另一个人的凭据一样。最糟糕的是,并非所有部分都具有相同的登录名。有时A人可以在第1页看到自己,但在第2页他可以看到自己是B,而在第3页他认为自己是C。
但最奇怪的是,这不是唯一发生的项目。它出现在另一个项目中,它们共享相同的规范,以及自定义的Authenticate组件(但它只与自己项目的用户交叉)
我在这里有点迷失,因为我检查了发送的cookie(只有蛋糕会话ID)并且它们没问题且匹配会话文件。
那么,任何线索可能是什么问题?我甚至不知道从哪里开始看。可以在Auth上吗?还是会话?还是缓存?
平台规格:
修改
这是我的自定义身份验证方法。请不要担心这种方法的编码错误,因为我必须尽快使其工作(很快就会解决)。
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;
}