TYPO3访问受限页面-登录后重定向

时间:2020-07-27 06:04:11

标签: typo3 typo3-9.x typo3-extensions felogin

对于受限页面,登录和重定向是否有实际的最佳实践?

我找到了很多示例,但所有示例都适用于较早的TYPO3 / felogin / ....版本(无站点配置)

我有以下情况:

我有几个受限页面和一个登录页面(登录)

我希望能够深度链接(例如,按邮件发送)到受限页面-如果用户未登录,则应显示登录表单-成功登录/注册后,应显示深度链接页面。 / p>

我使用TYPO3 9.5,并且在站点配置中添加了403处理以显示我的登录页面的内容。

此步骤正常-显示登录页面。

我在felogin插件中配置了引荐来源网址和GET / POST重定向,但是它们不起作用。

有没有人举一个例子,成功登录/注册后我如何重定向到原始的(受限制的)页面?

谢谢

基督徒

3 个答案:

答案 0 :(得分:2)

对于GET / POST重定向,您需要URL参数&return_url=。也许您可以尝试在403处理程序中重写GET参数以包含该参数。那可能是黄金。

这是我的操作方式:(登录页面上有uid=81

  • 站点配置:(显示登录页面上的内容)
    errorHandling:
      - errorCode: '403'
        errorHandler: Page
        errorContentSource: 't3://page?uid=81'
    ...
    
  • TypoScript:
    config {
      typolinkLinkAccessRestrictedPages = 81
      typolinkLinkAccessRestrictedPages_addParams = &return_url=###RETURN_URL###&pageId=###PAGE_ID###
    }
    # all plugin configuration via TypoScript. plugin settings in the backend unchanged.
    plugin.tx_felogin_pi1 {
      redirectMode = getpost,login
      redirectFirstMethod = 1
      linkConfig.parameter = 81
      redirectPageLogin = 96
      ...
    }
    
  • 注销链接:<f:link.page pageUid="81" title="Logout" additionalParams="{logintype: 'logout'}">...</f:link.page>

优点:

  • 使用拼写链接时,所有页面均可使用(因此,所有默认菜单,链接等)
  • 您可以通过电子邮件等共享URL。

缺点:

  • 直接访问访问限制页面时,您会看到登录页面。在登录后,您将被重定向到配置的“ redirectPageLogin”页面(96)。但是,如果我省略该配置,则根本不会进行任何重定向,因此用户将停留在登录页面上。

所以我对此不是100%满意。让我们在这里收集最佳实践示例。欢迎反馈。

答案 1 :(得分:1)

在Slack频道的帮助下,我最终找到了一个解决方案,该解决方案将用户重定向到用户请求的访问限制页面

它适用于TYPO3 v9 +

在站点配置(config.yaml)中:

errorHandling:
  -
    errorCode: '403'
    errorHandler: PHP
    errorPhpClassFQCN: Vendor\ExtName\Error\ErrorHandling

在扩展名setup.typoscript的{​​{1}}中:

felogin

在我的扩展名(此处称为`Vendor \ ExtName`)中:
config.typolinkLinkAccessRestrictedPages = {$plugin.tx_extname.settings.loginPid}
config.typolinkLinkAccessRestrictedPages_addParams = &return_url=###RETURN_URL###

// Redirect after login on Login page to previous page
plugin.tx_felogin_pi1 {
  showLogoutFormAfterLogin = 0
  redirectMode = getpost,referer
  redirectFirstMethod = 1
}

答案 2 :(得分:0)

我没有在应该保护的页面上添加用户组访问权限。取而代之的是,我在受保护页面的根目录中添加了一个模板,其中包含:

[page["uid"] != 2 && usergroup(1) == false]
    page.config >
    page.config.additionalHeaders.10 {
        header = Location: https://myurl.tld/login
    }
[end]

所有对没有用户组1的有效FE用户会话的受保护页面的直接访问将重定向到登录页面(UID = 2)。

这意味着页面树分支包含所有受保护的页面。 模板中的page必须是包含PAGE对象的数组。

这在TYPO3 V9.5上很好用。