2012-02-27 114 views
0

桌面应用程序与运行在symfony2上的我的网站进行交互,并需要json响应,从登录成功/失败开始。使用http_basic和提供者,如果登录是正确的一切正常,但我不能发送JSON响应。 如果登录不正确,它将重新提示用户名和密码对话框。如何停止在第一次失败的尝试和发送JSON响应json中的Symfony2登录/注销响应

{ 
'message':'invalid password/username' 
} 

security.yml

app: 
      pattern: ^/app.* 
      logout: true 
      security: true 
      http_basic:    
       provider: webservice 
providers: 
     fos_userbundle: 
      id: fos_user.user_manager 

     webservice: 
      id: my_provider 

config.yml

my_provider:  
     parent: doctrine.odm.mongodb.security.user.provider 
     arguments: [ Se\PPBundle\Document\User, username] 

TL;博士 我想在登录时使用json进行响应。

回答

2

从外观上看,您正在使用FOS用户包来处理您的身份验证。如果是这种情况,您将需要超载FOS安全控制器登录操作。改变那里的逻辑来发送失败时的差异响应,而不仅仅是渲染错误的视图。您还需要自定义登录路由。东西的效果:

_login: 
    pattern: /login 
    defaults: {_controller: "FOSUserBundle:Security:login", _format:json} 

注意_format:JSON这将返回你的回答是“应用/ JSON”你仍然需要json_encode返回