Joomla组件开发(3.3.3版)

Posted

技术标签:

【中文标题】Joomla组件开发(3.3.3版)【英文标题】:Joomla component development (version 3.3.3) 【发布时间】:2014-10-17 08:36:40 【问题描述】:

我有一个正在 joomla 中构建的组件,我只想在该组件是调用代理时从该组件呈现信息。

示例: 我有一个网址http://domain.com/index.php?option=com_mycomp&view=myaccount 从那里我想要一个呈现url的pop/overlay: http://domain.com/index.php?option=com_mycomp&view=mykey&user_id=123

我知道必须有一种方法只让“mykey”视图在从自身调用时呈现,并且不允许直接访问。我查看了登录模块并使用了 Jhtml::_('form.token')。不确定这是否是实现这一目标的“最佳实践”方式,或者这是否可行。

非常感谢任何帮助。

Joomla 版本:3.3.3

【问题讨论】:

澄清一下,你想确保用户不能直接在浏览器中输入你的覆盖/弹出的 URL 来访问视图? 是的,没错。自从我发布了这个我已经实现了一个检查用户状态变量的版本,我仍然不确定这是最佳实践。我不能使用 acl bc 它不是基于用户分组,而是基于用户是否输入了对上一个问题的正确答案。 【参考方案1】:

使用 SSL,对用户会话进行登录验证并验证每个请求的会话,我认为这是最佳实践。 Joomla 提供了一种显示表单令牌字段的机制:

 echo JHtml::_('form.token');

如果您需要将令牌附加到 URL。当想要呈现 HTML sn-ps 时,tmpl=componen 参数很重要。这会将 Joomla 标记为仅呈现组件视图,否则您将获得整个网站;菜单、模块和所有背面:

 echo JRoute::(JUri::root() . '?option=com_mycomponent&view=userscreen&tmpl=component&' . JUtility::getToken() . '=1');

在请求服务器端的另一端,以上面的路径为例,可以用控制器接收:

class MineControllerUserScreen extends JControllerLegacy

    public function display($cachable = false, $urlparams = array())
    
        // Validate the session is valid, die if isn't
        JRequest::checkToken() or die( JText::_( 'Invalid Token' ) );

        // Load the current user object for the active session if needed
        $user = JFactory::getUser();

        // Load the Session object for further validation if needed
        $session = JFactory::getSession();

        // Load sanitized items from POST and GET
        $jinput = JFactory::getApplication()->input;
        $answer = $jinput->get('user_answer', null, 'string');

        // You are satisfied this person is allowed to get this
        parent::display($cachable, $urlparams);
    

这个用例应该在控制器内处理。上面的示例列出了许多可以使用的从 Joomla 获取安全数据的选项;但对于您的情况,我认为将您现有的问题/答案合并为 POST 变量请求,通过令牌和用户验证应该可以解决问题。

这是关于安全编码指南的一般 Joomla 文档。

http://docs.joomla.org/Secure_coding_guidelines

【讨论】:

以上是关于Joomla组件开发(3.3.3版)的主要内容,如果未能解决你的问题,请参考以下文章

我想开发一个 joomla 组件,但我应该支持哪个版本?

在 Joomla 组件开发中导入 PHP 代码

Joomla 2.5 - 组件开发 - 使用表单

Joomla 组件开发:保存、应用和取消工具栏按钮不起作用

设计一个新的 Joomla 组件

开发组件:菜单项出错