Symfony3实现刷新登录时间

在Symfony3中实现刷新登录时间、登录加1的功能需要自己写一个success handle。

简单讲一下创建success handle的流程,使用的环境如下
PHP版本:7.1.8
Symfony版本:3.3.5
默认管理员权限相关的Bundle名为AuthorizationBundle

首先我们在AuthorizationBundle下创建一个Service文件夹,用来储存所有与service相关的文件。建立一个AuthorizationHandle.php的文件,这个是我们用来实现success handle的代码文件。

因为实现success handle需要实现AuthenticationSuccessHandlerInterface接口中的方法,所以我们的handle类这么写

getUser();
        $user->setLastLogin(new \DateTime());
        $user->save();

        return new RedirectResponse($this->container->get('router')->generate('huan_yue_admin_authorization_dashboard'));
    }
}

下面解释一下代码,AuthenticationSuccessHandlerInterface中的注释很清晰的写明了我们可以在onAuthenticationSuccess中实现我们的功能,并且最后需要返回一个Response。我们进行刷新登录时间、或者登录加1、或者其他什么操作后需要跳转到后台首页,因此需要生成一个RedirectResponse,我的代码里用到了Symfony container去获取router,所以需要使用Symfony提供给我们的Trait(注:在2.*版本中可以直接继承ContainerAware类)。到此,我们的success handel已经实现完成。

下一步,我们把我们的AuthorizationHandle注册到Symfony的Service中,在Resources\services.yml中添加

services:

huan_yue_authorization.authorization_handle:
    class: HuanYue\AuthorizationBundle\Service\AuthorizationHandle
    calls:
        - [ setContainer, [ "@service_container" ] ]

最后一步,修改app\config\security.yml文件,在form_login下添加我们的success handle,代码如下

form_login:
    check_path: huan_yue_admin_authorization_login
    login_path: huan_yue_admin_authorization_login
    default_target_path: huan_yue_admin_authorization_dashboard
    success_handler: huan_yue_authorization.authorization_handle

到此,整个流程完成。

你可能感兴趣的:(symfony3,symfony,php)