我正在创建一个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管理员,我也总是“未登录”。
有人可以帮我解决这个问题吗?任何帮助都感激不尽。 感谢
答案 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