我想有一个从前端页面到adminhtml页面的链接.我尝试过使用Adminhtml帮助器方法:
Mage::helper('adminhtml')->getUrl('some/admin/path')
Run Code Online (Sandbox Code Playgroud)
和Adminhtml URL模型方法:
Mage::getModel('adminhtml/url')->getUrl('some/admin/path')
Run Code Online (Sandbox Code Playgroud)
但无济于事.我每次都被踢到管理仪表板.
简短的回答:你不能(除了少数例外 - 看到这个答案的底部),至少没有禁用管理员URL密钥 -安全风险.
Magento散列会话"表单密钥"以及管理URL路径,以生成其管理URL密钥.这个表单键只是一个随机的16个字符的字符串,只要会话持续就会持续.麻烦的是,Magento为前端和adminhtml区域使用不同的会话cookie,因此使用不同的表单密钥.
因此,当您从前端生成管理URL时,Magento使用前端会话中的表单键.然后,当您单击该链接时,Magento会重新生成管理URL密钥以与链接中的密钥进行比较,但这次,它使用adminhtml表单密钥.由于表单键不匹配,因此散列的URL键不匹配,并且您的链接将不起作用.Magento此时的行为是将您带回管理仪表板(或管理员登录页面).
最终,这似乎是Magento的一个基本限制.我不相信它有任何解决方法(但如果有人能纠正我,我会很高兴).
更新:查看一些Magento的adminhtml控制器,似乎某些控制器操作默认情况下不需要URL键:
任何继承的控制器Mage_Adminhtml_Controller_Action都可以通过将某些操作添加到$_publicActions阵列来允许某些操作不需要管理URL密钥.因此,对于您自己的模块,或者如果您要覆盖Magento模块,如果您indexAction的管理控制器中有一个您希望公开的,那么您可以这样做:
public $_publicActions = array('index');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6484 次 |
| 最近记录: |