Я создаю модуль 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 admin.
Может ли кто-нибудь помочь мне решить эту проблему? Любая помощь будет высоко ценится. благодаря
Это действительно странно. Я использую почти точно такой же код, и он работает все время:
//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? Может быть, это поможет вам встать на правильный путь …
Убедитесь, что контроллер adminhtml вашего модуля расширяет Mage_Adminhtml_Controller_Action. Вы не можете проверить, зарегистрирован ли администратор с внешнего контроллера.
$user = Mage::getSingleton('admin/session');
if($user->getUser()->getUserId()) { // admin logged } else { // not admin logged }
Как сказал Дэвид Тай, вы должны расширить свой контроллер от Mage_Adminhtml_Controller_Action
.
В любом случае, самый короткий способ проверить, зарегистрирован ли администратор, – это вызов этого вспомогательного метода:
Mage::helper('adminhtml')->getCurrentUserId();
есть новый модуль magento, написанный alan storm: https://github.com/astorm/Magento_CrossAreaSessions