Php Joomla组件开发(版本3.3.3)
我在joomla中构建了一个组件,仅当该组件是调用代理时,我才希望从中呈现信息 例如: 我有一个网址 我希望在其中有一个pop/overlay来呈现url: 我知道必须有一种方法,只让“mykey”视图在从自身调用时呈现,而不允许直接访问。我研究了登录模块并使用JHtml::(('form.token')。不确定这是否是实现这一目标的“最佳实践”方法,或者这是否可行 非常感谢您的帮助Php Joomla组件开发(版本3.3.3),php,joomla,joomla-component,Php,Joomla,Joomla Component,我在joomla中构建了一个组件,仅当该组件是调用代理时,我才希望从中呈现信息 例如: 我有一个网址 我希望在其中有一个pop/overlay来呈现url: 我知道必须有一种方法,只让“mykey”视图在从自身调用时呈现,而不允许直接访问。我研究了登录模块并使用JHtml::(('form.token')。不确定这是否是实现这一目标的“最佳实践”方法,或者这是否可行 非常感谢您的帮助 JoOMLA版本:3.3.3< P>使用SSL、用户会话的登录验证和验证会话的每个请求,我将考虑一个最佳实践
echo JHtml::_('form.token');
如果需要将令牌附加到URL。当想要呈现HTML片段时,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通用文档
为了澄清,您想确保用户不能直接在浏览器中键入覆盖/弹出窗口的URL来访问视图?是的,这是正确的。因为我已经发布了这篇文章,我已经实现了一个检查用户状态变量的版本,我仍然不确定这是否是最佳实践。我不能使用acl bc,它不是基于用户分组,而是基于用户是否输入了前一个问题的正确答案。