表单成功后重定向symfony 4

时间:2018-05-24 07:56:06

标签: php symfony redirect symfony4

我遵循了本教程:https://symfony.com/doc/current/security/form_login_setup.html

构建我的表单并且它呈现正常,我在我的表中创建了一个用户并使用其用户名和密码登录但被重定向到空白页面,但我已将其设置为{ {1}}

我的security.yaml

/dashboard

我甚至尝试使用隐藏的encoders: App\Entity\User: bcrypt providers: in_memory: { memory: ~ } user_provider: entity: class: App\Entity\User property: username firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: anonymous: ~ http_basic: ~ provider: user_provider form_login: login_path: login check_path: login default_target_path: /dashboard 输入:

_target

LoginController.php

<input type="hidden" name="_target_path" value="{{ path('dashboard') }}" />

完整代码库:https://github.com/BPSBiro/symfony-forms-errors

但它只是重定向到<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; class LoginController extends Controller { public function login(Request $request, AuthenticationUtils $authenticationUtils) { $error = $authenticationUtils->getLastAuthenticationError(); $lastUser = $authenticationUtils->getLastUsername(); return $this->render('login/form.html.twig', array('last_username' => $lastUser, 'error' => $error)); } } 作为空白页面。我知道它没有错误(凭证明智),因为如果我在两个字段中输入乱码,那么它会返回/login并显示表单和错误消息(无效凭据)。

如何在表单成功后重定向?

2 个答案:

答案 0 :(得分:3)

所以我把你的github放下来并保持不变。创建了一个用户,然后尝试登录。有一个异常指向App \ Entity \ User :: serialize。你在这里遇到了一个小问题:

public function serialize()
{
    # causes infinite nesting
    # return $this->serialize(array($this->id, $this->username, $this->password));

    # the fix
    return serialize(array($this->id, $this->username, $this->password));
}

这个谜团是为什么你有一个空白页而不是一个例外。我使用内置服务器进行测试:

bin/console server:start

我猜你的Apache配置实际上是在生产模式下运行,这会抑制你的错误。

答案 1 :(得分:0)

如果您使用传统表单登录,为什么要保留http_basic: ~?请删除此内容并重试