我已经完成了"如何构建传统登录表单"食谱中提到的所有步骤(几乎与他们的方法相同),但成功登录后的重定向并不能正常工作。
用户/通行证的验证很有魅力,但在点击提交按钮后,Chrome/Opera会抛出没有描述的错误500(这不是Symfony错误页面,而是默认的网络浏览器错误页面),在重新启动浏览器之前,我的任何应用程序页面(甚至是匿名用户可用的页面)都无法进入。浏览器很可能被迫处理一些无休止的请求循环或类似的事情。
源代码的关键片段:
Security.yml:
(***)
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main_area:
anonymous: ~
http_basic: ~
provider: user_provider
form_login:
login_path: /login
check_path: /login_check
default_target_path: /index/welcome
# target_path_parameter: /index/welcome
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/index/board, roles: ROLE_USER}
(***)
SecurityControler.php
(***)
class SecurityController extends Controller
{
/**
* @Route("/login", name="login_route")
*/
public function loginAction()
{
$authUtils = $this->get('security.authentication_utils');
$error = $authUtils->getLastAuthenticationError();
$enteredUsername = $authUtils->getLastUsername();
return $this->render('BakaMainBundle::Login.html.twig',
array
(
'last_username' => $enteredUsername,
'error' => $error,
'site' => 'login'
));
}
/**
* @Route("/login_check", name="login_check")
*/
public function loginCheckAction()
{
}
}
UserReg.php(表单):
(***)
class UserReg extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email','email')
->add('username', 'text')
->add('plainPassword', 'repeated', array
(
'type' => 'password',
'first_options' => array('label'=>'Password'),
'second_options' => array('label'=> 'Repeat password')
))
->add('termsAccept', 'checkbox', array
(
'mapped'=> false,
'constraints' => new IsTrue()
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array
(
'data_class' => 'Baka'MainBundle'Entity'User'
));
}
public function getName()
{
return 'user';
}
}
我真的没有主意了,无论从哪个网站请求登录(甚至直接打开/login),结果都是一样的。有什么想法吗?
一种简单的方法来跟踪程序中的错误,使用日志,它使用
tail -f app/logs/dev.log
使用CCD_ 2查找"错误"字。
这使您能够准确地捕捉它发生的时刻,而不是随机浏览整个日志。