Intereting Posts
session_start () создает новый сеанс при каждом обновлении что может привести к тому, что атрибуты $ model-> не получат правильные значения в Yii? Будет ли XPath 2.0 и / или XSLT 2.0 реализован на PHP? Массив сортировки PHP по ключу Как реализовать OpenID-аутентификацию на основе Direct Identity с Zend OpenID Тестирование производительности на стороне сервера веб-приложения php Создание единого объекта из существующей базы данных с помощью symfony2 и доктрины mysqli_num_rows возвращает 1 независимо от того, что Как установить, нужно ли значение выбрать в другом поле множественного выбора при проверке laravel? LDAP работает с PHP CLI, но не через apache Как открыть несколько соединений сокетов и выполнить обратные вызовы в PHP Как увидеть laravel без php Artisan PHP Получить значение из массива config Отобразить способы доставки для интерфейса, как в панели администратора? Защищенные свойства с префиксом подчеркивания

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 admin.

Может ли кто-нибудь помочь мне решить эту проблему? Любая помощь будет высоко ценится. благодаря

Solutions Collecting From Web of "Magento: Как проверить, зарегистрирован ли администратор в контроллере модуля?"

Это действительно странно. Я использую почти точно такой же код, и он работает все время:

 //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