Magento : How to check if admin is logged in withi

2019-02-12 15:29发布

问题:

I'm creating a Magento Module. Within the controller, I want to check if an admin is logged in or not. So the controller only will be accessible if there is a logged in admin.

I'm trying to use this code on my controller.

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";
}

but I always get "not logged in", even if I'm already logged in to the magento admin.

Can anybody help me to resolve this issue?? any help will be much appreciated. Thanks

回答1:

That is really strange. I use almost exactly the same code and it works all the time:

//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";
}

Did you try var_dumping the $session variable? Maybe it will help you get on the right track...



回答2:

Make sure that your module's adminhtml controller is extending Mage_Adminhtml_Controller_Action. You can't check if an admin is logged in from a front end controller.



回答3:

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

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


回答4:

As David Tay said, you should extend your controller from Mage_Adminhtml_Controller_Action.
Anyway, the shortest way to check if admin is logged in is to call this helper method:

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


回答5:

there is a new magento module, written by alan storm: https://github.com/astorm/Magento_CrossAreaSessions