Symfony 2.7 - 登录表单问题(500错误代码)

时间:2015-11-16 20:50:25

标签: php forms security symfony login

我已经完成了“如何构建传统登录表单”配方中提到的所有步骤(几乎与完成它们的方式相同),但是成功登录后重定向不能正常工作。

用户/通行证的验证就像魅力一样,但点击提交按钮后,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直接打开),结果都是一样的。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用日志跟踪程序中的错误的简便方法

tail -f app/logs/dev.log

使用Cmd - f查找"错误"字。

这使您可以捕捉它发生的确切时刻,而不是随机浏览整个日志。