簡體   English   中英

Joomla組件開發(版本3.3.3)

[英]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文檔。

http://docs.joomla.org/Secure_coding_guidelines

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM