表单成功后重定向 symfony 4
Redirect after form success symfony 4
我遵循了这个教程:https://symfony.com/doc/current/security/form_login_setup.html
构建我的表单并且它呈现正常,我在我的 table 中创建了一个用户并使用其用户名和密码登录但被重定向到一个空白页面,但我已经设置好了去/dashboard
我的security.yaml
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
输入:
<input type="hidden" name="_target_path" value="{{ path('dashboard') }}" />
LoginController.php
<?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));
}
}
完整代码库:https://github.com/BPSBiro/symfony-forms-errors
但它只是重定向到 /login
作为空白页。我知道这不是错误(凭据明智),因为如果我在两个字段中键入乱码,然后它会返回到 /login
并显示表单和错误消息(无效凭据)。
表单成功后如何重定向?
如果您使用的是传统表单登录,为什么要保留 http_basic: ~
?请删除并重试
所以我降低了你的 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 配置实际上 运行 处于生产模式,这抑制了您的错误。
我遵循了这个教程:https://symfony.com/doc/current/security/form_login_setup.html
构建我的表单并且它呈现正常,我在我的 table 中创建了一个用户并使用其用户名和密码登录但被重定向到一个空白页面,但我已经设置好了去/dashboard
我的security.yaml
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
输入:
<input type="hidden" name="_target_path" value="{{ path('dashboard') }}" />
LoginController.php
<?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));
}
}
完整代码库:https://github.com/BPSBiro/symfony-forms-errors
但它只是重定向到 /login
作为空白页。我知道这不是错误(凭据明智),因为如果我在两个字段中键入乱码,然后它会返回到 /login
并显示表单和错误消息(无效凭据)。
表单成功后如何重定向?
如果您使用的是传统表单登录,为什么要保留 http_basic: ~
?请删除并重试
所以我降低了你的 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 配置实际上 运行 处于生产模式,这抑制了您的错误。