Magento:如何检查管理员是否在模块控制器中登录?

时间:2010-07-27 09:15:40

标签: php zend-framework session 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管理员,我也总是“未登录”。

有人可以帮我解决这个问题吗?任何帮助都感激不尽。 感谢

5 个答案:

答案 0 :(得分:19)

这真的很奇怪。我使用几乎完全相同的代码,它始终有效:

//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变量?也许它会帮助你走上正确的轨道......

答案 1 :(得分:2)

确保模块的adminhtml控制器正在扩展Mage_Adminhtml_Controller_Action。您无法检查管理员是否从前端控制器登录。

答案 2 :(得分:0)

$user = Mage::getSingleton('admin/session');

if($user->getUser()->getUserId()) {
   // admin logged
}
else {
   // not admin logged
}

答案 3 :(得分:0)

正如David Tay所说,你应该从Mage_Adminhtml_Controller_Action扩展你的控制器。
无论如何,检查管理员是否已登录的最短方法是调用此辅助方法:

Mage::helper('adminhtml')->getCurrentUserId();

答案 4 :(得分:0)

有一个新的magento模块,由alan storm编写:https://github.com/astorm/Magento_CrossAreaSessions