Symfony 2.4针对丢弃会话的自定义响应

时间:2014-02-20 20:47:40

标签: symfony symfony-2.4

我正在我的应用程序中开发一个RESTful接口(利用FOSRestBundle),我希望它总是返回一些有意义的JSON响应,即使非交互式身份验证失败(例如用户在登录会话期间被锁定)。现在它只是重定向到登录页面。

我虽然可以使用某些类型的Core Exception Listener来实现它,但我不知道要侦听哪些异常,或者它是否可能。

一些提示将不胜感激。

1 个答案:

答案 0 :(得分:0)

您必须从路线中删除“已登录的约束”。

例如,如果您在security.yml - { path: ^/admin, role: ROLE_ADMIN }中有类似内容,则需要将其替换为- { path: ^/admin, role: IS_AUTHENTICATED_ANONYMOUSLY },并检查他是否已登录您的控制器。 要检查用户在控制器中的角色,请使用

$securityContext = $this->container->get('security.context');
if( $securityContext->isGranted('IS_AUTHENTICATED_ANONYMOUSLY') ){  
   return;//send error json

}
//is logged in and authorized

当他实际登录时,照常进行,否则发送自定义回复。

我强烈建议您不要这样做,因为您需要维护更多代码并且还有更多错误,如果您想保护数据则更多。