2010-06-17 6 views
1

웹 사이트 중 일부는 Symfony 기타 Magento을 사용하여 구성됩니다. 두 사람 사이에 사용자 세션 변수를 공유 할 수 있는지 알고 싶습니다.Magento와 Symfony 간의 사용자 세션 변수 공유

감사합니다.

+0

세션입니다 요즘에는 모든 용어를 모호하게 포착합니다. 자세한 내용을 추가 할 수 있습니다. –

+0

잘 달성하고 싶은 것은 한 로그인 사용자가 시스템의 두 부분에서 모두 식별된다는 것입니다. – spacemonkey

답변

2

많은 시행 착오 끝에 나는 다음과 같은 작업을했습니다. 이는 Magento 이외의 플랫폼에서 로그인을 관리하는 상황을 기반으로합니다.

Magento 외부에서 초기화 된 Magento와 세션을 공유하는 방법을 찾을 수 없습니다. 대신 이벤트 관찰자 'http_response_send_before'에 후크하는 간단한 Magento 확장을 만들었습니다.

Magento가 페이지를로드 할 때마다 모듈은 사용자가 다른 시스템에 로그인되어 있는지 확인합니다. 그렇다면 해당 사용자의 전자 메일을 검색하고 전자 메일 주소를 식별자로 사용하여 사용자를 Magento에 기록하고 해당 고객에 대한 세션을 설정합니다. 고객이 이미 Magento에 있어야 로그인이 가능합니다.

여기에 포함 된 파일과 코드는 다음과 같습니다. 시스템을 사용하기 위해 자유롭게 수정하십시오.

/app/code/local/Verve/Session/etc/config.xml

<config> 
<modules> 
    <Verve_Session> 
     <version>0.5.1</version> 
    </Verve_Session> 
</modules> 
<frontend> 
    <events> 
     <http_response_send_before> 
      <observers> 
       <session_login> 
        <type>model</type> 
        <class>Verve_Session_Helper_Login</class> 
        <method>loginEvent</method> 
       </session_login> 
      </observers> 
     </http_response_send_before> 
    </events> 
</frontend> 

/app/code/local/Verve/Session/Helper/Login.php

class Verve_Session_Helper_Login extends Mage_Core_Helper_Abstract 
{ 

static function loginEvent($observer) { 

    $session = Mage::getSingleton('customer/session'); 

    if (!$session->isLoggedIn()) { 


     YOUR CODE HERE, FIND EMAIL OF LOGGED IN USER 


     if(@$email){ 

      $customer = Mage::getModel('customer/customer'); 
      $customer->loadByEmail($email); 
      $session = Mage::getSingleton('customer/session'); 
      $session->start(); 
      $session->setCustomer($customer); 
      $url  = $_SERVER['REQUEST_URI']; 
      Mage::app()->getFrontController()->getResponse()->setRedirect($url); 

     } 


    } 

} 

} 

/app/etc/modules/Verve_Session.xml

<config> 
<modules> 
    <Verve_Session> 
     <active>true</active> 
     <codePool>local</codePool> 
    </Verve_Session> 
</modules> 
</config> 
+0

Komra가 잘되었습니다! 고맙습니다 ...하지만 "다른 시스템에 사용자가 로그인했는지 확인하는 방법"을 설명 할 수 있습니까? Symfony의 API는 무엇입니까? –