我想限制对未登录用户访问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. 如何限制未登录的用户访问某些页面? (JSF 2.0)
- 2. Drupal - 受限内容访问显示用户的登录页面
- 3. 如果用户登录,如何限制后退按钮或直接访问登录页面angularjs
- 4. 限制用户无需使用javascript登录即可访问页面
- 5. 如何在laravel5.2中限制用户访问管理员未发布的页面?
- 6. Magento登录页面
- 7. 限制登录访问wp?
- 8. 限制FatFractal登录访问
- 9. 限制访问带证书的Laravel登录页面
- 10. 如何在RoR中限制用户访问页面?
- 11. 如果用户未登录,如何拒绝访问某个页面?
- 12. cvs登录问题 - 如何限制用户从cvs登录
- 13. 如何确保只有登录用户才能访问页面?
- 14. 如何在用户登录时停止访问WordPress页面
- 15. Cakephp登录页面访问
- 16. 根据登录用户的访问权限限制PHP的文件访问
- 17. ASP在不同的访问级别和受限制的访问页面上进行安全的用户登录
- 18. 如果用户未登录,如何阻止用户访问下一页?
- 19. 限制SSL仅用于登录页面
- 20. 如何在用户未登录时将用户重定向到登录页面
- 21. 如何登录Magento“404”页面
- 22. 阻止登录用户访问asp.net中的登录页面mvc 5
- 23. 限制使用PHP登录用户的内容访问
- 24. 如何让Googlebot访问登录页面后的页面
- 25. 限制访问页面php
- 26. 如何限制登录用户在登录页面或注册页面上以角度js移动?
- 27. Magento - 客户从外部页面重定向后未登录
- 28. 如何限制用户无需登录
- 29. 如何限制用户登录?
- 30. 限制访问Drupal中的匿名用户页面