您无权查看此资源 - Joomla

时间:2013-09-09 14:09:16

标签: joomla

我正在使用joomla 2.5.9版本,如果我没有登录,当我点击权限访问仅用于注册的文章时,我希望Joomla将我重定向到登录页面,而是Joomla将此消息返回给我:您无权查看此资源。

我没有看到为什么joomla默认没有将其重定向到登录页面的原因。

由于

2 个答案:

答案 0 :(得分:0)

这不能回答您的确切问题,但我认为这是一个很好的解决方法。我正在研究同样的问题。我现在的方法是检查“未授权”字符串的消息,然后根据该字符串设置标记。然后,您可以在模板中的任何位置检查该标志并重定向,或者只选择显示登录表单

/* get message from app */
$app = JFactory::getApplication();
$messages = $app->getMessageQueue();

/* set login flag to 0 */
$showlogin = 0;

/* if there is a message set... */
if (isset($messages[0])) {

    /* loop through messages and check for the "not authorised" string */
    foreach ($messages as $msg) {

        if ($msg["type"] == "error" && strpos($msg["message"], "not authorised") ) {

            /* if found, update login flag */
            $showlogin = 1;

        }

    }

}


    /* include in template body - you could redirect here instead of including login form */
if ($showlogin) {  ?>

    <jdoc:include type="modules" name="login-form" style="none" />

<?php } ?>

`

答案 1 :(得分:0)

当您尝试访问不可见的文章但该类别公开可见时会发生这种情况。

似乎它不被认为是一个错误,但我认为这是一个非常意想不到的“功能”。

要解决此问题,您可以修改:

  

的Joomla /组件/ com_content /视图/条/ view.html.php

    // Check the view access to the article (the model has already computed the values).
    if ($item->params->get('access-view') == false && ($item->params->get('show_noauth', '0') == '0'))
    {
        $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'error');
        $uri = urlencode(base64_encode(JURI::getInstance()->toString()));
        JFactory::getApplication()->redirect(
            JRoute::_('index.php?option=com_users&view=login&return='. $uri, false)
        );
        return;
    }

这将显示登录屏幕并在成功登录后返回文章。

如果你不想编辑核心文件(因为你想更新系统),你必须创建一个系统插件来覆盖它。