洋红色:检测管理员是否在前端页面中登录

2022-08-30 17:46:29

我创建了一个magento扩展。我想实现对扩展的访问。该扩展在前端创建一个页面,我希望只有管理员才能访问该页面。所以基本上我需要一些东西来检测,如果管理员登录到前端页面。

我已经尝试了几种解决方案,但注意到似乎有效。

if(Mage::getSingleton('admin/session', array('name' => 'adminhtml'))->isLoggedIn()) echo 'logged in'; else echo 'not logged in';

检查前端管理员是否已登录

Mage::getSingleton('core/session', array('name'=>'adminhtml'));
$adminSession = Mage::getSingleton('admin/session');
$adminSession->start();
if ($adminSession->isLoggedIn()) {
   echo 'logged in';
}

答案 1

上述解决方案不起作用!

这是一个有效的解决方案(它不是那么干净!但这可以在phtml视图或模型,控制器或助手的应用程序中的任何位置工作!

$sesId = isset($_COOKIE['adminhtml']) ? $_COOKIE['adminhtml'] : false ;
$session = false;
if($sesId){
    $session = Mage::getSingleton('core/resource_session')->read($sesId);
}
$loggedIn = false;
if($session)
{
    if(stristr($session,'Mage_Admin_Model_User'))
    {
        $loggedIn = true;
    }
}
var_dump($loggedIn);// this will be true if admin logged in and false if not

答案 2

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

$adminhtml  = Mage::getModel('pulsestorm_crossareasession/manager')->getSessionData('adminhtml');

$adminUser = $dataAdminhtml['admin']['user'];
$loggedIn = $adminUser->getId() && $adminUser->getIsActive();

推荐