Todo empieza cuando creamos una aplicación servidora para la administración de los menús, las cartas y platos de un restaurante. Necesitábamos una aplicación en un servidor para que a través de una aplicación móvil acceder y obtener los datos en tiempo real. Nosotros creamos la aplicación servidora en localhost, la desarrollamos y probamos y todo funcionaba correctamente. Para poder acceder a ella y obtener los datos desde la app móvil la subimos a un Hosting gratuito denominado “Hostinger” temporalmente mientras consiguiéramos nuestro dominio www.developando.com. Todo funcionaba correctamente. Una vez que tenemos nuestro dominio, decidimos crear un subdominio para acceder a la aplicación servidora a través de http://www.panel.developando.com.
Al migrar la aplicación al subdominio todos son problemas:
- No funciona el login: el sistema de autenticación implementado es el básico de cakephp 2 con Auth componente.
PHP |copy code |?
01 <?php
02 App::uses('Controller', 'Controller');03 class AppController extends Controller {04 05 public $components = array(06 'Session',07 'Auth' => array(08 'loginRedirect' => array('controller' => 'pages', 'action' => 'display', 'home'),09 'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),10 'authorize' => array('Controller'), // Added this line11 )
12 );13 public function beforeFilter() {14 parent::beforeFilter();15 $this->Auth->allow('login');16 $this->Auth->authError = __('Debes identificarte para acceder al panel de administración.');17 $this->Auth->loginError = __('Usuario o contraseña inválidos, inténtelo de nuevo más tarde');18 19 }
20 }?>
- El método “login” , usado paracomprobar si un usuario existe en base de datos o no siempre devuelve que no existe aunque en la base de datos si exista y el log demuestre que verdaderamente esa fila existe:
PHP |copy code |?
1 <?php
2 $this->Auth->login(); //always return false3 ?>
- No se muestran los mensajes de sesión básicos:
PHP |copy code |?
1 <?php
2 $this->Session->setFlash("El usuario se ha autenticado correctamente");3 ?>
- No funciona el método redirect. Al redirigir desde un método de un controlador a una página a través de
PHP |copy code |?
1 <?php
2 $this->redirect(array('action' => 'index');3 ?>
nos redirige a una página en blanco.
Después de investigar mucho y probar múltiples opciones que se mostraban en los foros de internet, en la documentación de cakephp, pensando que el problema era debido a la configuración de la sesión, las cookies, los ficheros htaccess, la configuración del subdominio… ¡¡¡No!!! El problema era que había espacios en blancos o líneas en blanco antes de la definición al comienzo de los ficheros del las clases del modelo y de los controladores.
Fichero incorrecto para este servidor
01 02
03
04
05
06 <?php
07 // app/Model/User.php
08 App::uses('AuthComponent', 'Controller/Component');
09 class User extends AppModel {
10
11 ....
12 ?>
Fichero correcto (sin líneas en blanco)
PHP |copy code |?
01 <code lang="php"><?php02 // app/Model/User.php
03 04 App::uses('AuthComponent', 'Controller/Component');05 class User extends AppModel {06 07 08 ....
09 10 ?>
Deja tu comentario