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

标签 redirect login symfony

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

相关文章:

login - meteor 帐户恢复 token "Remember Me"

login - 如何覆盖 Loopback 中的内置登录方法?

php - 使用开发依赖项在 Heroku 上部署时,尝试从命名空间 "WebProfilerBundle"加载类 "Symfony\Bundle\WebProfilerBundle"

Twig 中的 Symfony2 安全功能?如何查看用户的角色?

python - 我怎样才能使我的 Django 应用程序的这篇随机博客文章重定向更有效率

php - 如何在 php 中重定向页面

c# - HttpClient 忽略 AllowAutoRedirect 指令

python - 如何重定向到 Django 中的动态 URL

php - 使用 PHP 和 MySQL 的登录问题

php - Ratchet WebSocket 连接到 mysql 数据库的几个小时后出现错误 - SQLSTATE[HY000] : General error: 2006 MySQL server has gone away