我的 symfony3 登录页面默认重定向到主页,如我的 security.yml
中所述文件。
但是,如果用户还没有完成它,我希望它重定向到我的“编辑个人资料”页面。在任何其他形式中,我都会在 Controller 中进行此操作,但由于没有 $form->handleRequest($user)
在登录表单中,我没有 $user
要测试的变量。
有很多关于如何根据角色重定向用户的 SO 主题,以及 documentation讲述从表单的操作字段或在 security.yml
内重定向,但不是任何我正在寻找的。
如何根据条件重定向?
注意:由于某些原因,我还不能使用 FOSUserBundle :-(
最佳答案
我假设您正在使用 Guard 身份验证系统。 ( http://symfony.com/doc/current/security/guard_authentication.html )
那么你应该有一个扩展 AbstractGuardAuthenticator
的类。类(class)。
在那个类中,有一个方法叫做 onAuthenticationSuccess
,在这里你可以放置一些重定向请求的逻辑。
如果您返回 null
在这里,它将继续,并使用您的 security.yml 中配置的路由。
您需要通过 @router
通过dependencyInjection 为Authenticator 类提供服务。
假设您通过了路由器服务,您的方法将如下所示:
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
{
/** @var User $user */
$user = $token->getUser();
if ($user->hasCompleteProfile() == false) {
$url = $this->router->generate('edit_profile');
return new RedirectResponse($url);
}
// Continue with default behaviour
return null;
}
关于redirect - Symfony 在用户条件下登录后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41440417/