Ghean 0 Denunciar post Postado Março 30, 2011 Estou usando um plugin de segurança postado pelo Fabyo. Onde tenho o redirect do login está funcionando normalmente. if (strtolower($sControllerName) != 'login' && !$oAuth->hasIdentity()) { $oFrontController = Zend_Controller_Front::getInstance(); $sBaseUrl = $oFrontController->getBaseUrl(); $this->getResponse()->setRedirect($sBaseUrl . '/login/'); $this->getResponse()->sendHeaders(); exit(); } Inseri em meu application.ini uma variavel que será usada colocar o sistema em manutenção, ou seja, caso seja true o valor dessa variavel, o usuario será redirecionado para uma tela com a mensagem de manuntenção. Mas quando uso o redirect ele não funciona. No firefox (4.0) exibe a seguinte mensagem: Redirecionamento incorreto O Firefox detectou que o pedido para este endereço não será concluído devido à forma que o servidor o está redirecionando. Este problema algumas vezes pode ser causado pela desativação ou bloqueio de cookies. No IE, a pagina fica carrengando até cair. Segue trexo onde faço essa verificação: $config = Zend_Registry::get('config'); if( $config->manutencao ) { if ($oAuth->hasIdentity()) { $oAuth->clearIdentity(); } $this->getResponse()->setRedirect('/manutencao/'); $this->getResponse()->sendHeaders(); exit(); } Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Março 30, 2011 Ele está fazendo um redirecionamento infinito. Você precisa excluir o /manutencao/ da condição de redirecionamento. Veja que, por ser um plugin, ele é executado em todas as vezes que você carrega uma página. Eu, particularmente, faria diferente. application.ini [manutencao : production] resources.router.routes.manutencao.route = "/" resources.router.routes.manutencao.defaults.controller = "manutencao" Quando você quiser colocar o sistema em manutenção, você adiciona esta linha ao arquivo .htaccess: SetEnv APPLICATION_ENV manutencao A rota definida vai capturar qualquer requisição e enviar para o controller manutencao, mas somente quando ficar definido que o ambiente neste momento é de manutenção. Captou a ideia? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Março 30, 2011 Oi Matias, sua dica funcionou, perfeitamente. Mas somente quando acesso o endereço normal do sistema (http://meusistema.com). Se tento acessar um modulo (http://meusistema.com/pesquisas) ele deixa acessar. Diante da sua proposta dei uma verificada no manual e então corrigi da seguinte forma. [manutencao : production] resources.router.routes.manutencao.route = "/*" resources.router.routes.manutencao.defaults.controller = "manutencao" Muito obrigado pela dica. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Março 30, 2011 Ghean Obrigado por compartilhar esta modificação na solução. Ajudará outras pessoas com o mesmo problema. Vou editar o título para algo que tenha mais relação com a solução encontrada. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Abril 4, 2011 Outra coisa que esqueci de mensionar foi que como utilizo servidor Windows (IIS), não possuo o arquivo .htacess. Então altero o ambiente da aplicação no index.php // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'manutencao')); Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Abril 4, 2011 Tem jeito mais correto de fazer do que assim: define('APPLICATION_ENV', 'manutencao'); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); Este defined verifica se está definido. Caso não esteja, cria a constante. Então, você pode criar direto a constante, como eu coloquei ali. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Ghean 0 Denunciar post Postado Abril 4, 2011 :joia: Compartilhar este post Link para o post Compartilhar em outros sites
ronal-gato 15 Denunciar post Postado Maio 22, 2012 Estou com a mesma duvida mais esse codigo que o Ghean criou deve ser colocado no arquivo .htaccess ou no index.php ? Compartilhar este post Link para o post Compartilhar em outros sites