gpt4 book ai didi

redirect - Symfony 在用户条件下登录后重定向

转载 作者:行者123 更新时间:2023-12-03 15:50:36 25 4
gpt4 key购买 nike

我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com