Проверьте, зарегистрирован ли Admin в Обозревателе - PullRequest
1 голос
/ 12 марта 2012

Я пытаюсь проверить, вошел ли администратор в систему от наблюдателя. Проблема в том, что, хотя это легко сделать при просмотре административного модуля, просмотр внешнего интерфейса - это другая история.

Есть несколько похожих вопросов , но, к сожалению, ни один из них не предоставляет рабочего решения для Magento 1.6.2.

Я не смог успешно заставить isLoggedIn() вернуть true в классе admin/session. Я также обнаружил, что существует файл cookie для внешнего интерфейса и adminhtml, который может помочь.

Принятый ответ на этот связанный вопрос, кажется, предполагает, что это может быть невозможно:

Magento - проверка входа администратора и клиента в систему

Еще один связанный с этим вопрос, решение которого не помогло в моем конкретном случае:

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

Ответы [ 3 ]

3 голосов
/ 16 января 2013

Это возможно.Что вам нужно сделать, это переключить данные сеанса.Вы можете сделать это с помощью следующего кода:

  $switchSessionName = 'adminhtml';
  if (!empty($_COOKIE[$switchSessionName])) {
      $currentSessionId = Mage::getSingleton('core/session')->getSessionId();
      $currentSessionName = Mage::getSingleton('core/session')->getSessionName();
      if ($currentSessionId && $currentSessionName && isset($_COOKIE[$currentSessionName])) {
          $switchSessionId = $_COOKIE[$switchSessionName];
          $this->_switchSession($switchSessionName, $switchSessionId);
          $whateverData = Mage::getModel('mymodule/session')->getWhateverData();
          $this->_switchSession($currentSessionName, $currentSessionId);
      }
  }

  protected function _switchSession($namespace, $id = null) {
      session_write_close();
      $GLOBALS['_SESSION'] = null;
      $session = Mage::getSingleton('core/session');
      if ($id) {
          $session->setSessionId($id);
      }
      $session->start($namespace);
  }
1 голос
/ 04 ноября 2012

Поздний ответ, но если, как я нашел его в Google:

Это не возможно.

Почему? Поскольку имя сеанса по умолчанию во внешнем интерфейсе равно frontend, а имя сеанса во внутреннем интерфейсе - admin. Из-за этого данные сеанса администратора недоступны во внешнем интерфейсе.

0 голосов
/ 12 марта 2012

вы пробовали это:

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

как насчет этого (я не уверен, что это будет работать или нет)

require_once 'app/Mage.php';
umask(0);
$apps = Mage::app('default');
Mage::getSingleton('core/session', array('name'=>'adminhtml'));
$adminSession = Mage::getSingleton('admin/session');
$adminSession->start();
if ($adminSession->isLoggedIn()) {
   // check admin
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...