2012-05-16 68 views
0

我试图修改一个已经严重修改的joomla环境。我不是Joomla的开发人员,所以在荒野中有一点迷失,可以这么说。Joomla身份验证返回URL

基本上,99%的网站由Access Level = Registered的文章组成。当您点击其中一篇文章的URL时,Joomla会重定向到一个授权页面。这是有道理的,除了原始文章的URL在登录后丢失,您将被重定向回主页,而不是最初打算的文章。

现在,我可以看到error.php页面已被代码修改为拦截403错误,并且这看起来应该起作用。但是,不知何故/ Joomla以某种方式重定向到auth页面,并且没有403被抛出。

所以我的问题是,Joomla如何执行重定向到auth页面(一个自定义插件顺便说一句),有什么办法让Joomla反而抛出403错误,所以我可以使用已经编码错误的逻辑。 PHP。

在此先感谢

PS是的Joomla 1.5.23和5.2.17 PHP

回答

0

一个403 error是在HTTP的水平。当用户尝试访问他无权访问的服务器的一部分时,会引发此问题。这些权限与Joomla权限完全不同。大多数情况下,403错误只来自.htaccess文件的限制,或者脚本告诉服务器发出403错误(请参阅下面的代码)。

我不是Joomla专家,但是当用户转到auth页面时,您应该能够引发403错误。这PHP代码应该做的伎俩:

header("HTTP/1.0 403 Forbidden"); 

希望这可以帮助你。

1

Joomla! 1.5使用相当全面的.htaccess文件,并且Joel表示这发生在Joomla之前!看看。

一个标准的Joomla!如果相关组件写入正确(如文章的标准com_content),则1.5用户登录后安装将重定向到正确的内容。我首先看看为什么这不起作用,例如由于某种原因,的auth检查已被修改。

Joomla! 1.5通常会通过将return参数(base64编码)附加到用于调用com_user的URL来实现此目的,您可以在大多数组件中找到这样的代码来检查用户是否有权访问并且是否重定向它们。

if (($contact->access > $user->get('aid', 0)) || ($contact->category_access > $user->get('aid', 0))) { 
    $uri  = JFactory::getURI(); 
    $return  = $uri->toString(); 

    $url = 'index.php?option=com_user&view=login'; 
    $url .= '&return='.base64_encode($return); 

    $mainframe->redirect($url, JText::_('You must login first')); 
} 
+0

谢谢。我现在想出来了,最后很简单。有一个自定义重定向模块没有正确配置。感谢您的答复 –