2014-06-11 2 views
1

웹 응용 프로그램을 magento와 연결하려고합니다. 따라서 사용자가 웹 응용 프로그램에 로그온하면 자동으로 magento에 로그온하게됩니다.도메인을 통한 외부 사이트의 magento 로그인

더 간단하게하기 위해 간단한 로그인 양식으로 테스트하고 있습니다. 이제 magento가 설치되었으며 맞춤 API가 작성된 맞춤 모듈과 로그인 API를 호출하여 사용자 인증을 시도하는 PHP 양식이 있습니다. API를 모델

코드 : PHP를 양식

class Modulename_Model_Api extends Mage_Api_Model_Resource_Abstract 
{ 
    function login($email, $password) 
    { 
     Mage::app()->setCurrentStore("default"); 
     Mage::getSingleton('core/session'); 

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

     if($session->login($email, $password)) { 
      return $session->getSessionId(); 
     } else { 
      $this->_fault('login_fail'); 
      return false; 
     } 
    } 
} 

코드 :

<?php 

if (isset($_POST['email']) && isset($_POST['password'])) { 
    $proxy = new SoapClient('http://www.domain.com/magento/api/?wsdl'); 
    $sessionId = $proxy->login('apiuser', 'apikey'); 

    try { 
     $token = $proxy->call($sessionId, 'customer.login', array(
      'email'=>$_POST['email'], 
      'password'=>$_POST['password'] 
     )); 
    } catch (Exception $e) { 
     echo $e->faultstring; 
    } 

    if ($token) { 
     setcookie('frontend', $token, time()+3600, "/magento/", ".domain.com"); 
     header('Location: http://www.domain.com/magento/'); 
    } else { 
     //some error handling 
    } 

} 

?> 

<form method="POST"> 
    <input type="text" name="email"/> 
    <input type="password" name="password"/> 
    <input type="submit" value="Login" /> 
</form> 

지금까지, 로그 - 인 형태가 완벽하게 작동합니다. 그러나 다른 도메인에 PHP 폼을 넣으려고하면 실패합니다.

API 호출에서 세션 ID를 가져올 수 있습니다. 따라서 도메인 전체의 세션 ID로 쿠키를 설정하려고 할 때 가장 좋은 추측은 잘못된 것입니다.

아무도 도와 줄 수 있습니까?

답변

0

정확합니다. Magento 백엔드와 동일한 도메인에 세션 쿠키를 설정하면 Magento가 쿠키를 읽고 로그인 할 수 있지만 다른 도메인에서 쿠키를 설정하려고하면 브라우저에서 도메인 간 쿠키 제한 (http://en.wikipedia.org/wiki/HTTP_cookie#Privacy_and_third-party_cookies)으로 쿠키를 허용하지 않습니다. . 다른 도메인에서 고객을 로그인하려는 경우 Magento의 OAuth API (http://www.magentocommerce.com/api/rest/introduction.html)를 사용해야합니다.

기본적으로 웹 앱은 OAuth 소비자로 작동하고 Magento는 OAuth 공급자로 작동합니다. 사이트에 로그인 한 사용자는 먼저 Magento에 로그인합니다. OAuth 댄스가 완료되고 webapp이 Magento에서 OAuth 액세스 토큰을 얻은 후에는 자체 액세스 모듈을 사용하여이 액세스 토큰을 사용하여 인증/권한 부여를 처리 할 수 ​​있습니다.

이 솔루션은 고객을 먼저 Magento에 로그인 한 다음 사이트에 "자동"로그인합니다.

관련 문제