Joomla组件开发(版本3.3.3)



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

的例子:我有一个url http://domain.com/index.php?option=com_mycomp&view=myaccount从那里我想有一个弹出/覆盖渲染url:http://domain.com/index.php?option=com_mycomp&视图= mykey& user_id = 123

我知道必须有一种方法,只让"mykey"视图渲染时从自身调用,不允许直接访问。我已经研究了登录模块并使用JHtml::_('form.token')。不确定这是否是实现这一目标的"最佳实践"方式,或者这是否有效。

感谢您的帮助。

Joomla version: 3.3.3

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

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

如果您需要将令牌附加到URL。当想要呈现HTML片段时,tmpl= component参数很重要。这将标记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

相关内容

  • 没有找到相关文章

最新更新