2010-07-27 9 views
9

Estoy creando un Módulo Magento. Dentro del controlador, quiero verificar si un administrador está conectado o no. Por lo tanto, solo se podrá acceder al controlador si hay un administrador conectado.Magento: ¿Cómo verificar si el administrador está conectado dentro de un controlador de módulo?

estoy tratando de utilizar este código en mi controlador.

Mage::getSingleton('core/session', array('name' => 'adminhtml')); 
$session = Mage::getSingleton('admin/session'); 

// Use the 'admin/session' object to check loggedIn status 
if ($session->isLoggedIn()) { 
    echo "logged in"; 
} else { 
    echo "not logged in"; 
} 

pero siempre me sale "sin iniciar sesión", incluso si ya he iniciado sesión en el administrador de magento.

Puede alguien ayudarme a resolver este problema ?? Cualquier ayuda será muy apreciada. Gracias

+0

Tengo las El mismo problema en un complemento de integración tiny_mce – lrkwz

+0

funciona a la perfección :) – jruzafa

+0

funciona perfecto para mí http://magentocodes.blogspot.in/2015/10/how-to-check-admin-is-logged-in-or-not. html con esto podemos consultar en cualquier lugar en magento. gracias –

Respuesta

18

Eso es realmente extraño. Uso casi exactamente el mismo código y funciona todo el tiempo:

//get the admin session 
Mage::getSingleton('core/session', array('name'=>'adminhtml')); 

//verify if the user is logged in to the backend 
if(Mage::getSingleton('admin/session')->isLoggedIn()){ 
    //do stuff 
} 
else 
{ 
    echo "go away bad boy"; 
} 

¿Intentó var_dumping la variable $ session? Tal vez le ayudará a conseguir en el camino correcto ...

+0

sí, Yo probé var_dump la variable de sesión $, hay algo en eso, pero parece que no hay información sobre el estado de inicio de sesión. Lo extraño es que lo intenté en otro módulo, y es el trabajo. ¿Hay algo que ver con el archivo de configuración del módulo? – Calua

+1

Curiosamente, estoy teniendo el mismo problema que Calua, pero solo algunas veces. Tengo dos ejemplos de instalación de Magento en mi servidor, una es la versión de producción (en mydomain.com) y la otra es una instancia de puesta en escena (en stage.mydomain.com). Los fragmentos de código anteriores funcionan en el escenario pero no en la producción. No estoy seguro por qué. Puede haber algún ajuste oscuro en alguna parte, pero lo único que sé es diferente es que mi producción tiene ssl y mi etapa no. Extraño. Me pregunto si alguien ha replicado el problema de esta manera. – shaune

+0

Esto funcionó para mí ... – ravisoni

2

Asegúrese de que el controlador adminhtml de su módulo está extendiendo Mage_Adminhtml_Controller_Action. No puede verificar si un administrador ha iniciado sesión desde un controlador frontal.

0

$user = Mage::getSingleton('admin/session');

if($user->getUser()->getUserId()) { 
    // admin logged 
} 
else { 
    // not admin logged 
} 
0

Como dijo David Tay, debe ampliar su controlador de Mage_Adminhtml_Controller_Action.
De todos modos, el camino más corto para comprobar si se registra en administrador es llamar a este método de ayuda:

Mage::helper('adminhtml')->getCurrentUserId(); 
Cuestiones relacionadas