Symfony2身份验证:在POST请求

时间:2015-12-04 23:13:01

标签: php symfony authentication

我遇到Symfony身份验证问题。

我的security.yml文件如下所示:

providers:
    corebundle_admin:
        entity:
            class:    CoreAdminBundle:Admin
            property: username

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    admin:
        pattern: ^/admin
        form_login:
            provider:    corebundle_admin
            login_path:  /admin/login
            check_path:  /admin/login
        logout: true
        anonymous: true

access_control:
   - { path: ^/admin/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
   - { path: ^/admin, role: ROLE_ADMIN }

我的控制员:

  /**
   * @Route("/login")
   * @Method("GET")
   */
  public function loginAction() {
    return $this->render('CoreAdminBundle:Admin:login.html.twig');
  }

  /**
   * @param Request $request
   *
   * @Route("/login")
   * @Method("POST")
   */
  public function checkAction(Request $request) {
    // do something
  }

一切正常,但是当我尝试向/ admin / login发送POST请求时,响应为302并重定向到/ admin / login ...

我被困在这里,任何帮助都将受到赞赏。

由于

1 个答案:

答案 0 :(得分:0)

将您的登录检查操作更改为:/ login_check或任何名称'/ login'它将起作用

  /**
   * @Route("/login")
   * @Method("GET")
  */
 public function loginAction() {
   return $this->render('CoreAdminBundle:Admin:login.html.twig');
 }

  /**
   * @param Request $request
  *
 * @Route("/login_check")
 * @Method("POST")
 */
 public function checkAction(Request $request) {
  // do something
 }

编辑您的security.yml

         provider:    corebundle_admin
        login_path:  /admin/login
        check_path:  /admin/login_check