[英]Joomla component development (version 3.3.3)
我有一個要在joomla中構建的組件,僅當該組件是調用代理時,我才希望從該組件呈現信息。
示例:我從那里有一個URL http://domain.com/index.php?option=com_mycomp&view=myaccount我想要一個呈現該URL的彈出/覆蓋圖: http : //domain.com/index.php ?選項= com_mycomp&查看=&的myKey USER_ID = 123
我知道必須有一種方法只能讓“ mykey”視圖從自身調用時呈現,並且不允許直接訪問。 我已經研究了登錄模塊,並使用了JHtml :: _('form.token')。 不知道這是否是實現此目標的“最佳實踐”方法,或者是否可行。
任何幫助是極大的贊賞。
Joomla版本:3.3.3
使用SSL,用於用戶會話的登錄驗證以及驗證會話的每個請求,我認為都是最佳做法。 Joomla提供了一種顯示表單令牌字段的機制:
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文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.