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

появился новый модуль magento, написанный Аланом Штормом: https://github.com/astorm/Magento_CrossAreaSessions

person Kevin    schedule 22.10.2014