TYPO3:404 用于受限访问页面而不是登录表单
Posted
技术标签:
【中文标题】TYPO3:404 用于受限访问页面而不是登录表单【英文标题】:TYPO3: 404 for restricted access page instead of login form 【发布时间】:2011-10-03 13:01:11 【问题描述】:我有一个指向受限页面的链接。当我在注销状态下直接访问链接时,它会重定向到 404。实际上它应该重定向到登录表单。
我试过了:
config
typolinkLinkAccessRestrictedPages=PAGE_ID
typolinkLinkAccessRestrictedPages_addParams = &return_url=###RETURN_URL###&pageId=###PAGE_ID###
不工作。
我也试过登录状态重定向插件,没用。
有人知道怎么做吗?我使用的是 TYPO3 版本 4.4.8。
【问题讨论】:
如果您能告诉我们您的 TYPO3 版本会很有帮助 - 在 4.5 版中提交了一个关于错误标签的错误:forge.typo3.org/issues/24942。但是,这对您有帮助的可能性很小。 另一个问题:您使用的是 RealURL 还是多域配置(请参阅 4.3 bugs.typo3.org/view.php?id=11412 中的错误)?您在我们找到“PAGE Id”的 TS 设置中实际投入了什么?如果将标记###RETURN_URL### 和###PAGE_ID### 替换为实际值会发生什么?很抱歉我没有正确的答案,但也许这些提示有助于向前迈出一步。 我使用的是typo3 4.4.8版。我尝试用值替换标记。它仍然重定向到 404 页面。 TYPO3 v6.2.4,RealURL 1.12.8 在 multidomain 网站中存在同样的问题。我通过 TypoScript + Fluid f:cObject(typoscriptObjectPath: 'plugin.tx_felogin_pi1') 将 felogin 插件添加到每个页面,并有一个带有 felogin 插件的额外页面,其中typolinkAccessRestrictedPages 设置为。 实际上,目前使用 TYPO3 9.5,它给出了 403(不是 404),应该是正确的。您可以在站点处理中添加 403 错误页面(也可以包含 felogin 元素或登录页面的链接) 【参考方案1】:由于这仍然没有答案,这有帮助吗? 适用于 TYPO3
# Check if user is logged in:
[usergroup = *]
# do something
[else]
page.config >
page.config.additionalHeaders = Location: http://www.yourdomain.org/login.html
[end]
我最近将此帖子发布到 another questions,我突然想到这可能是适合您探测的解决方法。
Found here
【讨论】:
检测未登录用户的更好方法是[loginUser = ]
。现在您可以保护两行,包括 [else]。
听起来很合理。但是,现在没有时间进行测试;)。
由于 TYPO3 8.7 additionalHeaders 不再是一个字符串而是一个数组,所以这应该改变,见***.com/questions/53740210/…
见docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Setup/…
代码自 TYPO3 8.7 起已过时。查看其他(重复)答案:***.com/questions/6663228/…【参考方案2】:
因为 TYPO3 的这种行为似乎没有合适的解决方案,所以我对 RealURL 使用了以下解决方法。
-
在 TYPO3 中创建 404 页面
将Speaking URL 路径段设置为“404-error”并检查
覆盖整个页面路径
添加描述正在发生的事情的文本(即“页面不存在或受到限制,请登录”)
将 felogin 插件添加到该页面并在用户登录时将其隐藏
在安装工具中设置
[FE][pageNotFound_handling] = /404-error/
这个404-error页面会在用户每次请求一个他不允许看到的页面或者一个不存在的页面时显示。当用户使用页面上的登录表单时,他会在登录后立即找到正确的内容,因为 URI 根本没有改变(当没有为 fe_login 插件配置重定向时)。
【讨论】:
在 TYPO3 8 中不起作用。当 fe_login 插件限制重定向到目标页面时,不再可能。【参考方案3】:完整的解决方案: 1.首先在typo3conf/LocalConfiguration.php中添加:
'FE' => [
'pageNotFound_handling' => 'REDIRECT:/login/',
"pageNotFound_handling_statheader" => 'HTTP/1.1 404 Not Found',
...
],
然后添加到打字稿:
'
配置 错字链接LinkAccessRestrictedPages = YOUR_LOGIN_PAGE_ID 错字链接LinkAccessRestrictedPages_addParams = &return_url=###RETURN_URL### plugin.tx_felogin_pi1.redirectMode = referer
'
【讨论】:
【参考方案4】:Fe_login 不能单独做到这一点...
按照以下步骤::
-
felogin 登录后安装“pagenotfoundhandling”扩展
配置。
在“pagenotfoundhandling”扩展配置中将 403 页面配置为登录页面。
然后,当您尝试访问“访问受限页面”时,“pagenotfoundhandling”将重定向到登录页面,然后 pagenotfoundhandling 处理重定向到再次请求的页面。我已经在 TYPO3 6.2.14 上测试过这个
【讨论】:
【参考方案5】:我发现了另一种解决方法,看起来应该可以正常工作。
# 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 并投票支持功能请求)。
【讨论】:
【参考方案6】:我不确定如何使重定向正常工作,但也许一些背景知识会有所帮助。
typolinkLinkAccessRestrictedPages 仅与链接生成交互。这样,只要您有指向访问受限页面的链接,您就应该获得指向“PAGE Id”页面的链接。我怀疑您正在使用您的登录 pid 代替 PAGE Id,我想这应该可以工作,但我没有使用此特定功能。我有typolinkLinkAccessRestrictedPages = NONE,它使所有链接都显示出来,链接到正确的url,但只有登录的用户才能成功加载这些页面。
如果有人在没有登录的情况下使用书签访问受限页面,或者他们点击这些链接之一,或者直接输入地址,或者其他任何内容,他们将遇到 TYPO3 的 404 处理(错误消息:ID 不是可访问的页面)。要改变 TYPO3 处理这些错误的方式,你需要通过 localconf.php 中的这个设置来改变 TYPO3 的作用:
$TYPO3_CONF_VARS["FE"]["pageNotFound_handling"]
我不知道是否有一种干净的方法可以自动重定向到登录页面而无需破解 pageNotFound_handling。
就打字稿解决方案而言,这不适用于我的网站,因为触发器不是某人是否登录(通常他们不会登录)——我的网站的触发器正在尝试在您未登录时访问受保护的页面。我不希望它重定向未登录的每个人,因为很多页面不需要任何登录。
【讨论】:
以上是关于TYPO3:404 用于受限访问页面而不是登录表单的主要内容,如果未能解决你的问题,请参考以下文章
如何在typo3 V10的extbase控制器中重定向到404页面
如果匿名用户无权访问 URL,如何将他们重定向到自定义页面而不是登录页面?