2013-04-09 6 views
0

로그인하지 않은 사용자를 위해 Magento의 특정 정적 페이지에 대한 액세스를 제한하고 싶습니다. 누구나 솔루션을 가지고 있습니까? 일부 확장 (http://www.magentocommerce.com/magento-connect/MageParts/extension/3842/restrict_cms_pageshttp://www.magentocommerce.com/magento-connect/advanced-permissions.html)을 살펴 보았지만 실제로 필요한 것은 훨씬 간단합니다. 제안 사항이 있으십니까? 감사합니다Magento에 로그인하지 않은 사용자를위한 페이지 액세스를 제한하는 방법

답변

4

자신의 모듈을 만들고 Mage_Cms_PageController 컨트롤러 (위치는 app/code/core/Mage/Cms/controllers/PageController.php)를 다시 작성해야합니다. 여기

이 작업을 수행하는 방법에 대한 자습서입니다 :

http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/how_to_overload_a_controller 그래서 당신이 당신의 자신의 모듈을 만들,의는 CustomCms/PageAccess을 가정 해 봅시다. 이 외에, 당신은 공개 또는 관리자 패널에서 직접 보호 할 수있는 페이지 설정하려면

class CustomCms_PageAccess_PageController extends Mage_Cms_PageController 
{ 
    public function viewAction() 
    { 
     $pageId = $this->getRequest()->getParam('id', false); 
     if (Mage::getSingleton('customer/session')->isLoggedIn() || $this->publiclyVisible($pageId)) { 
      parent::viewAction(); // default action 
     } else { 
      $this->_forward('noRoute'); // 404 
     } 
    } 

    /* 
    * this function should be in a helper 
    * !!! Return false if the page should be visible only to logged in users !!! 
    * @return bool 
    */ 
    public function publiclyVisible($pageId) { 
     return true; // here is where you check the page id 
    } 
} 

, 당신은 편집 CMS를 페이지에 사용자 정의 필드를 추가 할 필요가 다음과 같은 컨트롤러가 필요합니다 . 여기

이 작업을 수행하는 방법에 대한 자습서입니다 :

public function publiclyVisible($pageId) { 
     $page = Mage::getModel('cms/page')->load(intval($pageId)); 
     // I'm asuming the new field is is_publicly_visible 
     return (bool)$page->getIsPubliclyVisible(); 
    } 

참고 :

내가 테스트하지 않은 그 후 http://blog.flexishore.com/2011/08/add-custom-field-to-cms-page/

을, 당신은 publiclyVisible 기능을 수정해야 튜토리얼은 연결했지만 건너 뛰고 잘하는 것 같습니다.

3

최근에 작성한 내용은 a new Magento customer page (자체 링크)입니다. 자습서 자체는 사용자의 요구에 조금 큰 부담이지만 사용자가 로그인했는지 여부를 확인하는 마법의 코드 행을 가지고 있습니다.

"정적 페이지"가 ​​Magento 환경에서 작동한다고 가정하면 다음 PHP 코드를 통해 원하는 곳으로 이동해야합니다.

if(Mage::getSingleton('customer/session')->isLoggedIn()) 
{ 
    var_dump("Is Logged In"); 
} 
else 
{ 
    var_dump("In Not Logged in. Exit or redirect or something."); 
} 
0

Magento의 모든 페이지에는 컨트롤러 및 동작 기능이 있습니다.

컨트롤러 동작 기능 내의 특정 페이지에 대해 고객이 로그인했는지 여부를 확인하는 코드를 적용해야합니다. 로그인하지 않은 경우 다른 페이지로 리디렉션됩니다.

if(Mage::getSingleton('customer/session')->isLoggedIn()) 
{ 
    continue... 
} 
else 
{ 
    redirect.... 
} 
관련 문제