我想限制對未登錄用戶訪問Magento中的特定靜態頁面。有沒有人有辦法解決嗎。我看了一些擴展(http://www.magentocommerce.com/magento-connect/MageParts/extension/3842/restrict_cms_pages和),但我真正需要的是更簡單。 有什麼建議嗎? 謝謝如何限制訪問Magento中未登錄用戶的頁面
回答
您需要創建自己的模塊並重寫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
}
}
如果除此之外,你要設置哪些頁面是公開可見的或直接從管理面板保護,您需要在編輯內容管理頁面中添加自定義字段。
這裏是如何做到這一點的教程:http://blog.flexishore.com/2011/08/add-custom-field-to-cms-page/
之後,你需要修改publiclyVisible
功能:
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();
}
注:
我沒有測試過我鏈接的教程,但通過他們瀏覽,似乎很好。
我最近報道了創建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.");
}
對於Magento中的任何頁面,都會有一個MOdule控制器和一個動作函數。
對於控制器操作功能中的特定頁面,您應該應用一個代碼來檢查客戶是否已登錄。 如果沒有登錄重定向到其他頁面。
if(Mage::getSingleton('customer/session')->isLoggedIn())
{
continue...
}
else
{
redirect....
}
我不知道這個答案是否仍然相關,但有一個免費的Magento擴展程序,只是你想要的。它被稱爲登錄檢查。
http://www.magentocommerce.com/magento-connect/login-check.html
- 1. 限制用戶登錄後訪問登錄頁面php
- 2. 如何讓未登錄的用戶只訪問一次受限制的頁面?
- 3. 如何限制未登錄的用戶訪問某些頁面? (JSF 2.0)
- 4. 如何限制訪問,如果用戶未登錄
- 5. 如果用戶登錄,我的受限PHP頁面不限制訪問
- 6. 登錄時的用戶限制頁面
- 7. 限制Swagger UI訪問 - 用戶登錄
- 8. Node.js.如何將頁面訪問限制爲未記錄的用戶?
- 9. 如何限制通過ip訪問ActiveAdmin登錄頁面?
- 10. Drupal - 受限內容訪問顯示用戶的登錄頁面
- 11. 如果用戶登錄,如何限制後退按鈕或直接訪問登錄頁面angularjs
- 12. 如何限制登錄用戶在春季訪問登錄頁面而不使用彈簧安全性?
- 13. 限制用戶同時訪問頁面
- 14. 只有登錄的用戶才能訪問PHP登錄頁面?
- 15. 已登錄但無法訪問登錄用戶的頁面?
- 16. 受登錄過濾器限制的頁面仍可被其他用戶訪問
- 17. 限制用戶無需使用javascript登錄即可訪問頁面
- 18. 強制用戶訪問webroot下的頁面以登錄到cakephp
- 19. 如何在laravel5.2中限制用戶訪問管理員未發佈的頁面?
- 20. 如何跟蹤用戶在登錄時訪問的頁面
- 21. 限制FatFractal登錄訪問
- 22. 限制登錄訪問wp?
- 23. 如何限制用戶無需登錄即可進入頁面
- 24. 如何在RoR中限制用戶訪問頁面?
- 25. 限制訪問帶證書的Laravel登錄頁面
- 26. 限制訪問與Facebook登錄特定的WordPress頁面
- 27. 如何重定向已登錄的用戶嘗試訪問登錄頁面MVC3
- 28. 如何在未登錄時導航用戶登錄頁面
- 29. Magento登錄頁面
- 30. 登錄頁面的用戶權限