2017-07-31 82 views
6

我想以编程方式将用户登录到magento管理员。管理页面位于iframe中,并且必须自动重定向到管理仪表板而无需身份验证。我使用了古代邮政中发现的代码,它与magento核心来源相匹配。该代码是:以编程方式magento管理连接不起作用

umask(0); 
$app = Mage::app('default'); 

Mage::getSingleton('core/session', array('name' => 'adminhtml')); 

// supply username 
$user = Mage::getModel('core/factory')->getModel('admin/user')->loadByUsername($loginadmin); 

    if (Mage::getSingleton('adminhtml/url')->useSecretKey()) { 
     Mage::getSingleton('adminhtml/url')->renewSecretUrls(); 
    } 

    $session = Mage::getSingleton('admin/session'); 
    $session->setIsFirstVisit(false); 
    $session->setUser($user); 
    $session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); 
    Mage::dispatchEvent('admin_session_user_login_success',array('user'=>$user)); 

    if ($session->isLoggedIn()) { 
     //Redirection vers le dashboard 
     $url = "index.php/admico/dashboard"; 
     header('Location: '.$url); 
    } 

当我var_dump()数据,用户存在,它有像姓名,身份证等的所有信息,它是正确的。代码进入最后的if并重定向到'index.php/admico/dashboard',因此$session已正确登录。但是,无论如何,首页显示的连接形式就好像会话未登录一样,而不是管理员。

有人能帮我弄清楚有什么问题吗?

回答

0

也许当窗口在最后一个条件中重定向时,iframe无法访问您网站上的登录会话。我看到您正在使用PHP header函数。我能想到的唯一可能的解决方案是获取登录会话的SID并将其用作URL参数。所以里面的条件有些编辑的代码看起来是这样的:

$SID=$session->getEncryptedSessionId(); 
$url = "index.php/admico/dashboard?SID=" . $SID; 

如果不工作,你可以尝试使用PHP函数setcookie()$session作为存储的数据,然后尝试重定向。你可以找到那个here的文档。这就是我为你准备的。如果这不起作用,请尝试看看this,看看有没有什么可以帮助你。祝你好运!

+0

很抱歉,但它不工作:/ – Erlaunis

0

我在代码中做了两处修改,它在firefox,safari和chrome上对我来说工作得很好。我在尝试此代码之前还清理了我的Cookie。

test.php的

<iframe src="http://localhost.site/test_login.php" width="100%"></iframe> 

test_login.php

<?php 

require 'app/Mage.php'; 

umask (0); 
Mage::app ('admin'); 

Mage::getSingleton('core/session', array('name' => 'adminhtml')); 

// supply username 
$user = Mage::getModel('admin/user')->loadByUsername("USERNAME"); 

if (Mage::getSingleton('adminhtml/url')->useSecretKey()) { 
    Mage::getSingleton('adminhtml/url')->renewSecretUrls(); 
} 

$session = Mage::getSingleton('admin/session'); 
$session->setIsFirstVisit(false); 
$session->setUser($user); 
$session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); 
Mage::dispatchEvent('admin_session_user_login_success',array('user'=>$user)); 

if ($session->isLoggedIn()) { 
    //Redirection vers le dashboard 
    $url = "/admin/dashboard/"; 
    header('Location: '.$url); 
} 
+0

我复制粘贴你的代码,但它仍然无法正常工作,这不是” t将我重定向到仪表板:/ – Erlaunis

+0

是否启用了php错误报告? –

相关问题