Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您无权查看此资源-Joomla_Joomla - Fatal编程技术网

您无权查看此资源-Joomla

您无权查看此资源-Joomla,joomla,Joomla,我使用的是joomla 2.5.9版本,如果我在点击一篇文章时未登录,权限访问仅用于注册,我希望joomla将我重定向到登录页面,但joomla会返回以下消息:您无权查看此资源 我不明白为什么joomla默认情况下没有重定向到登录页面 谢谢这并没有回答你的确切问题,但我认为这是一个很好的解决办法。我正在研究同一个问题。我目前的方法是检查消息中的“未授权”字符串,然后根据该字符串设置一个标志。然后,您可以在模板中的任何位置检查该标志,或者重定向,或者选择显示登录表单 /* get message

我使用的是joomla 2.5.9版本,如果我在点击一篇文章时未登录,权限访问仅用于注册,我希望joomla将我重定向到登录页面,但joomla会返回以下消息:您无权查看此资源

我不明白为什么joomla默认情况下没有重定向到登录页面


谢谢

这并没有回答你的确切问题,但我认为这是一个很好的解决办法。我正在研究同一个问题。我目前的方法是检查消息中的“未授权”字符串,然后根据该字符串设置一个标志。然后,您可以在模板中的任何位置检查该标志,或者重定向,或者选择显示登录表单
/* 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 } ?>
/*从应用程序获取消息*/
$app=JFactory::getApplication();
$messages=$app->getMessageQueue();
/*将登录标志设置为0*/
$showlogin=0;
/*如果有消息集*/
如果(isset($messages[0])){
/*循环浏览消息并检查“未授权”字符串*/
foreach($msg形式的消息){
如果($msg[“type”]=“error”&&strpos($msg[“message”],“not authorized”)){
/*如果找到,更新登录标志*/
$showlogin=1;
}
}
}
/*包含在模板正文中-您可以在此处重定向,而不包括登录表单*/
如果($showlogin){?>

`

当您试图访问一篇不可见但类别公开可见的文章时,会发生这种情况

似乎这不是一个bug,但我认为这是一个非常意外的“特性”

要解决此问题,您可以编辑:

joomla/components/com_content/views/article/view.html.php

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


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

因为这样做不会发送正确的状态标题。此外,如果用户登录,用户能够看到它的保证是什么?如果您使用show not authorized,您将获得登录页面的链接。您好,您到底在哪里复制这段代码?我是Joomla so coul的新手d您对哪个文件非常具体?谢谢!@fabdarice我正在index.php文件中为我的模板使用此代码,就在HTML输出开始之前(就在您看到
之前)。index.php文件位于您的模板-/templates/your_template/index.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;
    }