TYPO3: 受限访问页面出现404而非登录表单

9

我有一个指向受限页面的链接。当我在注销状态下直接访问该链接时,会重定向到404页面。实际上它应该重定向到登录表单。

我尝试过:

config {
   typolinkLinkAccessRestrictedPages=PAGE_ID 
   typolinkLinkAccessRestrictedPages_addParams = &return_url=###RETURN_URL###&pageId=###PAGE_ID###
   }

无法工作。

我还尝试了登录状态重定向插件,但没有用。

有人知道如何解决吗?我正在使用 TYPO3 版本 4.4.8。


如果您告诉我们您的TYPO3版本,将会很有帮助 - 在4.5版本中已经报告了一个关于错误标记的漏洞:http://forge.typo3.org/issues/24942。然而,这对您有所帮助的可能性很低。 - Mateng
另一个问题:您是否使用RealURL或多域配置(请参见4.3中的错误http://bugs.typo3.org/view.php?id=11412)?您实际上在TS设置中放置了什么,我们在那里找到“PAGE Id”?如果您用实际值替换标记###RETURN_URL###和###PAGE_ID###会发生什么?很抱歉我没有一个正确的答案,但也许这些提示可以帮助您向前迈进一步。 - Mateng
我正在使用TYPO3版本4.4.8。我尝试用值替换标记,但仍会重定向到404页面。 - Sivakumar
在我的TYPO3 v6.2.4RealURL 1.12.8多域名网站中也遇到了同样的问题。我通过TypoScript + Fluid {f:cObject(typoscriptObjectPath: 'plugin.tx_felogin_pi1')} 在每个页面上添加了_felogin_插件,并有一个额外的带有felogin插件的页面,其中设置了_typolinkAccessRestrictedPages_。 - Ludwig
实际上,目前使用TYPO3 9.5时,它会返回403错误(而不是404),这应该是正确的。您可以在站点处理中添加一个403错误页面(其中还可以包含felogin元素或链接到登录页面)。 - Sybille Peters
6个回答

2

由于这个问题仍未得到解答,这个回答是否有所帮助? 适用于 TYPO3 < 8.x

# Check if user is logged in:
[usergroup = *]
# do something
[else]
page.config >
page.config.additionalHeaders = Location: http://www.yourdomain.org/login.html
[end]

我最近在另一个问题上发布了这个帖子,我想到这可能是您的问题的一个合适的解决方法。

在这里找到


1
检测未登录用户的更好方法是通过[loginUser = ]。现在您可以安全地省略两行代码,包括[else]。 - Ludwig
听起来很合理。但现在没有时间进行测试 ;)。 - Mateng
自 TYPO3 8.7 版本开始,additionalHeaders 不再是字符串而是一个数组,因此需要进行更改,请参见 https://stackoverflow.com/questions/53740210/typo3-8-7-typoscript-redirect-not-working-after-upgrade。 - Sybille Peters
请参见 https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Setup/Config/Index.html#additionalheaders。 - Sybille Peters
1
代码已经过时,自 TYPO3 8.7 版本起不再适用。请参考其他(重复的)答案:https://dev59.com/FVnUa4cB1Zd3GeqPXyYi#8178529 - Sybille Peters

1

我不确定如何正确地使重定向工作,但也许一些背景信息会有所帮助。

typolinkLinkAccessRestrictedPages仅与链接生成交互。这样,无论您在哪里有一个指向受访问限制页面的链接,您都应该得到一个指向“PAGE Id”页面的链接。我怀疑您正在使用登录pid代替PAGE Id,我想这应该可以工作,但我没有使用过这个特定功能。我有typolinkLinkAccessRestrictedPages = NONE,这使得所有链接都显示出来,链接到正确的url,但只有已登录的用户才能成功加载这些页面。

如果任何人在未登录的情况下使用书签访问受访问限制的页面,或者他们单击其中一个链接,或直接键入地址等,他们将遇到TYPO3的404处理(错误消息为:ID不是可访问页面)。要更改TYPO3处理这些错误的方式,您需要通过localconf.php中的此设置更改TYPO3的操作:

$TYPO3_CONF_VARS["FE"]["pageNotFound_handling"]

我不知道是否有一种干净的方法可以自动重定向到登录页面,而不需要篡改pageNotFound_handling。

至于typoscript解决方案,对于我的网站来说,那行不通,因为触发器并不是某人是否已经登录(通常他们不会登录)-对于我的网站,触发器是在未登录时尝试访问受保护的页面。我不希望将每个未登录的人都重定向,因为很多页面不需要任何登录。


1

Fe_login无法单独完成此操作...

请按照以下步骤进行:

  1. 在felogin登录配置后安装“pagenotfoundhandling”扩展。
  2. 在“pagenotfoundhandling”扩展配置中将403页面配置为登录页面。

然后,当您尝试访问“受限制的页面”时,“pagenotfoundhandling”将重定向到登录页面,然后再次处理重定向到请求的页面。我已在TYPO3 6.2.14上测试过。


0

我找到了另一种解决方法,看起来应该可以很好地工作。

# pages and subpages starting at 123 and 321 are restricted
[PIDinRootline = 123,321] && [loginUser = ]
    page.headerData.666 = TEXT
    page.headerData.666 {
        data = getIndpEnv:TYPO3_REQUEST_URL
        wrap = <meta http-equiv="refresh" content="0; URL=/passwort/?referer= | " />
    }
[global]

重要提示:不要限制整个页面,只需限制页面的所有内容即可。否则,RealURL将触发404处理程序。

目前,page.config.additionalHeaders(如@Mateng所使用的)不支持stdWrap,因此您无法在登录后添加引荐人以重定向到所需页面(请参见TYPO3 Forge并投票支持功能请求)。


0
由于 TYPO3 没有适当的解决方案,我使用以下 RealURL 解决方法。
  1. 在 TYPO3 中创建一个 404 页面
  2. 可读 URL 路径段 设置为 "404-error" 并勾选 覆盖整个页面路径
  3. 添加描述发生了什么的文本(例如“页面不存在或受限,请登录”)
  4. 将 felogin 插件添加到该页面并在用户登录时隐藏它
  5. 在安装工具中设置 [FE][pageNotFound_handling] = /404-error/
每当用户请求他无权查看或不存在的页面时,都会显示此 404-error 页面。当用户在页面上使用登录表单时,因为 URI 没有更改(没有为 fe_login 插件配置重定向),他将立即找到正确的内容。

在TYPO3 8中无法工作。当fe_login插件受限时,重定向到目标页面将不再可能。 - lisardo

0
完整解决方案: 1. 首先在typo3conf/LocalConfiguration.php中添加以下内容:
'FE' => [
        'pageNotFound_handling' => 'REDIRECT:/login/',
        "pageNotFound_handling_statheader" => 'HTTP/1.1 404 Not Found',
         ...
],
  • 然后添加到typoscript:

    '

    config { typolinkLinkAccessRestrictedPages = YOUR_LOGIN_PAGE_ID typolinkLinkAccessRestrictedPages_addParams = &return_url=###RETURN_URL### } plugin.tx_felogin_pi1.redirectMode = referer

  • '


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接