Magento: Как да проверя дали администраторът е влязъл в рамките на модулен контролер?

Създавам модул Magento. В рамките на контролера искам да проверя дали администраторът е влязъл или не. Така че контролерът ще бъде достъпен само ако има влязъл администратор.

Опитвам се да използвам този код на моя контролер.

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

но винаги получавам „не съм влязъл“, дори ако вече съм влязъл в администратора на magento.

Може ли някой да ми помогне да разреша този проблем?? всяка помощ ще бъде много оценена. Благодаря


person Calua    schedule 27.07.2010    source източник
comment
Имам същия проблем в плъгин за интегриране на tiny_mce   -  person lrkwz    schedule 04.05.2012
comment
работи перфектно за мен magentocodes.blogspot.in/2015/10/ с това можем да проверяваме навсякъде в Magento. Благодаря   -  person Rohit Goel    schedule 29.10.2015


Отговори (4)


Това наистина е странно. Използвам почти абсолютно същия код и той работи през цялото време:

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

Опитахте ли var_dumping променливата $session? Може би това ще ви помогне да тръгнете по правилния път...

person silvo    schedule 27.07.2010
comment
да, опитах var_dump променливата $session, има нещо в това, но изглежда, че няма информация за състоянието на влизане. Странното е, че опитах това на друг модул и работи. Има ли нещо общо с конфигурационния файл на модула?? - person Calua; 28.07.2010
comment
Интересното е, че имам същия проблем като Калуа - но само понякога. Имам два екземпляра на настройка на magento на моя сървър, единият е производствената версия (на mydomain.com), а другият е етапен екземпляр (на stage.mydomain.com). Кодовите фрагменти по-горе работят на сцената, но не и в производството. Не знам защо. Може да има някаква неясна настройка някъде, но единственото нещо, което ЗНАМ е различно е, че продукцията ми има ssl, а сцената ми не. Странно. Чудя се дали някой е репликирал проблема по този начин? - person shaune; 11.03.2011

Уверете се, че контролерът adminhtml на вашия модул разширява Mage_Adminhtml_Controller_Action. Не можете да проверите дали даден администратор е влязъл от преден контролер.

person Community    schedule 07.04.2011

Както каза Дейвид Тей, трябва да разширите своя контролер от Mage_Adminhtml_Controller_Action.
Както и да е, най-краткият начин да проверите дали администраторът е влязъл е да извикате този помощен метод:

Mage::helper('adminhtml')->getCurrentUserId();
person Roman Snitko    schedule 11.04.2014

има нов магенто модул, написан от Алън Сторм: https://github.com/astorm/Magento_CrossAreaSessions

person Kevin    schedule 22.10.2014