使用Symfony/FOSUserBundle,如何将锁定的用户重定向到登录表单以外的页面?

使用Symfony/FOSUserBundle,如何将锁定的用户重定向到登录表单以外的页面?,symfony,fosuserbundle,Symfony,Fosuserbundle,我有一个使用Symfony 3.4和FOSUserBundle 2.1.2的现有系统。我们有一个锁定用户的概念(最初在FOSUserBundle中,但现在在我们自己的bundle中被删除)。Symfony core Security检查用户是否在授权期间被锁定,以及是否被锁定,并抛出锁定异常。该异常会导致登录失败,并在FOSUserBundle登录页面上显示一条简单的文本消息 用户可以随意锁定和解锁,但在系统中,作为入职流程的一部分,锁定用户也有特定的原因,如果用户处于该状态,我希望在登录时向用

我有一个使用Symfony 3.4和FOSUserBundle 2.1.2的现有系统。我们有一个锁定用户的概念(最初在FOSUserBundle中,但现在在我们自己的bundle中被删除)。Symfony core Security检查用户是否在授权期间被锁定,以及是否被锁定,并抛出
锁定异常。该异常会导致登录失败,并在FOSUserBundle登录页面上显示一条简单的文本消息

用户可以随意锁定和解锁,但在系统中,作为入职流程的一部分,锁定用户也有特定的原因,如果用户处于该状态,我希望在登录时向用户显示不同的页面,如“您的帐户已被锁定,因为XYZ,请等待我们通知您一切都已正确设置”。但是,我不知道如何在FOSUserBundle框架中实现这一点

通常情况下,人们会使用事件来处理这类事情,但在这一点上似乎没有一个事件能够提供帮助——它们不够具体,并且不允许条件重定向

我开始尝试覆盖FOSUserBundle
SecurityController
,以引入我自己的一些逻辑,我认为这会起作用,但当我们移动到Symfony 4.x(很快)时,将不支持捆绑继承

迁移到更现代的Symfony-Guard安全方法将为我们提供所需的灵活性,我们会在某个时候做到这一点(FOSUserBundle本身并不支持Symfony的最新版本),但现在不支持

是否有一种方法允许我们在FOSUserBundle进程中有条件地重定向锁定的用户


提前感谢!

不会使用“安全性.交互式登录”(或类似的方式,我们在3.3项目中使用此功能在CRM中进行访问登录)来满足您的需要?将函数连接到此事件,并检查事件主题(用户)无论他是否被锁定。此外,如果你正在使用twig,你可以设置一个条件
如果app.user.isLocked==true//这里你设置了主块覆盖的锁定模板//这里你设置了非锁定用户的普通模板
很好的建议!看起来它只会在成功登录时启动?我的锁定用户不会执行操作我建议调整默认的LoginAuthenticator,并在security.yml中用它替换FOSUserBundle,在那里你可以在getCredentials方法中指定锁定用户可能会发生的情况,这可能会起到作用。谢谢,我可能会这样做。看起来比ide要多做一些工作尽管如此,由于我们还没有使用Guard方法进行身份验证。“security.interactive_login”(或类似的东西,我们在3.3项目的CRM中使用此方法进行访问登录)是否适合您的需要?将函数连接到此事件并检查事件主题(用户)无论他是否被锁定。此外,如果你正在使用twig,你可以设置一个条件
如果app.user.isLocked==true//这里你设置了主块覆盖的锁定模板//这里你设置了非锁定用户的普通模板
很好的建议!看起来它只会在成功登录时启动?我的锁定用户不会执行操作我建议调整默认的LoginAuthenticator,并在security.yml中用它替换FOSUserBundle,在那里你可以在getCredentials方法中指定锁定用户可能会发生的情况,这可能会起到作用。谢谢,我可能会这样做。看起来比ide要多做一些工作不过,因为我们还没有使用Guard方法进行身份验证。