首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Typo3 v8或v9中为前端用户挂接注销操作

如何在Typo3 v8或v9中为前端用户挂接注销操作
EN

Stack Overflow用户
提问于 2020-04-05 00:52:02
回答 1查看 411关注 0票数 3

我正在开发一个Typo3扩展,我想连接前端用户的注销操作。我寻找了一个适当的指南/教程,并得到了一个粗略的想法,我们如何才能做到这一点。我尝试了两种方法:

( 1) 使用Logout_confirmed Hook,但不起作用。也许我遗漏了什么。我所做的是..。我在ext_localconf.php中提到了下面一行

代码语言:javascript
复制
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['felogin']['logout_confirmed'] = Vendor/Ext_key/Hooks/Logout::class.'->checklogout'

并在给定路径Vendor/Ext_key/Hooks/Logout::class.'->checklogout'...上创建了一个类。但是,当用户点击注销时,流永远不会到达checklogout()方法。有人能说出我错过了什么或者做错了什么吗。

2)我尝试通过检查直接在控制器操作中拦截注销请求。

代码语言:javascript
复制
            if ($_REQUEST['logintype'] == 'logout')

我可以拦截这个请求,但是在我在Controller中拦截它之前,用户会被注销,并且它的数据被从会话中清除。当用户点击注销时,我必须为每个用户设置一些值,所以我想在用户点击注销和他的会话被清除之前连接起来。这样我就可以访问用户名并相应地为该用户设置值。

EN

回答 1

Stack Overflow用户

发布于 2022-10-12 09:09:12

在方法TYPO3\CMS\Core\Authentication\AbstractUserAuthentication中使用logoff()类中的一个钩子

ext_localconf.php扩展中注册钩子

代码语言:javascript
复制
$GLOBALS['TYPO3_CONF_VARS']
        ['SC_OPTIONS']
        ['t3lib/class.t3lib_userauth.php']
        ['logoff_pre_processing']
        [] = \Vendor\Extension\Hooks\FrontendLogoutHook::class . '->checklogout';

添加类Vendor\Extension\Hooks\FrontendLogoutHook

代码语言:javascript
复制
class FrontendLogoutHook
{
    public function checklogout(array $ref, $userAuth)
    {
        $userId = $userAuth->getSession()->getUserId();

        if (
            $userAuth instanceof \TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication
            && $userAuth->getLoginFormData()['status'] == 'logout'
            && $userId
        ) {
            // ... do stuff
        }
    }
}

上面的例子使用钩子logoff_pre_processing,它是在注销发生之前调用的,但是在注销(logoff_post_processing)之后也有一个钩子。

确保在将钩子添加到TYPO3后删除整个ext_localconf.php缓存!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61036724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档