Nir*_*Ram 24 php administration magento magento-1.7
我创建了一个magento扩展.我想实现对扩展的访问.该扩展程序在前端创建一个页面,我只希望管理员访问该页面.所以基本上我需要能够检测到管理员是否在前端页面登录的东西.
我已经尝试了几种解决方案,但注意似乎有效.
if(Mage::getSingleton('admin/session', array('name' => 'adminhtml'))->isLoggedIn()) echo 'logged in'; else echo 'not logged in';
Run Code Online (Sandbox Code Playgroud)
Mage::getSingleton('core/session', array('name'=>'adminhtml'));
$adminSession = Mage::getSingleton('admin/session');
$adminSession->start();
if ($adminSession->isLoggedIn()) {
echo 'logged in';
}
Run Code Online (Sandbox Code Playgroud)
Mea*_*bed 13
以上解决方案不起作用!
这是一个有效的解决方案(它不是那么干净!但是这可以在你的应用程序的任何地方使用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
Run Code Online (Sandbox Code Playgroud)
有一个新的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();
Run Code Online (Sandbox Code Playgroud)
小智 5
Christoph Peters发布了一个链接,该链接解决了我的问题(如果在前端页面中登录了admin,请检测):
//check if adminhtml cookie is set
if(array_key_exists('adminhtml', $_COOKIE)){
//get session path and add dir seperator and content field of cookie as data name with magento "sess_" prefix
$sessionFilePath = Mage::getBaseDir('session').DS.'sess_'.$_COOKIE['adminhtml'];
//write content of file in var
$sessionFile = file_get_contents($sessionFilePath);
//save old session
$oldSession = $_SESSION;
//decode adminhtml session
session_decode($sessionFile);
//save session data from $_SESSION
$adminSessionData = $_SESSION;
//set old session back to current session
$_SESSION = $oldSession;
if(array_key_exists('user', $adminSessionData['admin'])){
//save Mage_Admin_Model_User object in var
$adminUserObj = $adminSessionData['admin']['user'];
echo 'ADMIN USER IS LOGGED IN';
}
else
{
echo 'ADMIN USER IS NOT LOGGED IN'
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢Christoph Peters!
Vis*_*nku -1
检查这个博客start(),我想你不需要在检查之前检查isLoggedIn()。
Mage::getSingleton('core/session', array('name'=>'adminhtml')); // get sessions
$check = Mage::getSingleton('admin/session', array('name'=>'adminhtml')); //get admin sessions
if($check->isLoggedIn()) { //check is admin logged in
echo "Admin is logged in";
} else {
echo "Admin is offline";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13480 次 |
| 最近记录: |