2012-12-23 82 views
0

登录失败后,应用程序不重定向到登录page.Here是我security.yml配置:不重定向到登录页面,登录失败后的symfony 2.1

security: 
encoders: 
    Acme\SecurityBundle\Entity\Users: sha512 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 

providers: 
    main: 
     entity: { class: Acme\SecurityBundle\Entity\Users} 

firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    login: 
     pattern: ^/login$ 
     security: false 

    secured_area: 
     pattern: ^/admin/ 
     form_login: 
      check_path: /login_check 
      login_path: /login 
     logout: 
      path: /logout 
      target: /home 

access_control: 
    - { path: ^/admin, roles: ROLE_ADMIN } 

这里是我的控制器:

class LoginController extends Controller { 

/** 
* @Route("/login",name="login") 
*/ 
public function loginAction() { 
    //displays login form and renders the login.html.twig 
} 

/** 
* @Route("/login_check", name="login_check") 
*/ 
public function loginCheckAction() { 
    // The security layer will intercept this request 
} 

登录失败后,我得到的错误是:

The controller must return a response (null given). Did you forget to add a return statement somewhere in your controller? 
    500 Internal Server Error - LogicException 

我insid试图登录部分e与symfony一起发布的Demo。我发现了相同的结果。 登录失败后,为了重定向登录表单,我需要做些什么修改?

回答

2

您不需要为登录和注销操作创建控制器类。你只需要指定这些路由的routing.yml里面,是这样的:

login_path: 
    pattern: /login 
login_check_path: 
    pattern: /admin/login_check 
logout_path: 
    pattern: /admin/logout 

这些路线是由安全组件自动处理。

在防火墙配置中,您的check_path应该定义为/admin/login_check。注销路径应该是/admin/logout