小编dmr*_*rlc的帖子

FOSUserBundle - 首次登录后强制更改密码

在使用FOSUserBundle进行用户管理的Symfony2应用程序中,用户表已通过csv文件中的导入脚本和从数据组合生成的密码填充.

我想强制用户在首次登录时更改密码.

事件FOSUserEvents::SECURITY_IMPLICIT_LOGIN发生时,fos_user_change_password如果字段last_login为NULL ,则重定向到路由.

我的想法是重写onImplicitLogin(UserEvent $event)类的方法,AGI\UserBundle\EventListener\LastLoginListener但是类没有被覆盖:

public function onImplicitLogin(UserEvent $event) {
    $user = $event->getUser ();

    if ($user->getLastLogin () === null) {
        $user->setLastLogin ( new \DateTime () );
        $this->userManager->updateUser ( $user );
        $response = new RedirectResponse ( $this->router->generate ( 'fos_user_change_password' ) );
        $this->session->getFlashBag ()->add ( 'notice', 'Please change your password' );
        $event->setResponse ( $response );
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经有一个包覆盖FOSUserBundle,它适用于控制器,表单等,但看起来它不是用eventListeners做的方式.

如何在首次登录后强制用户更改密码?

php symfony fosuserbundle

5
推荐指数
1
解决办法
3732
查看次数

标签 统计

fosuserbundle ×1

php ×1

symfony ×1