我正在我的应用程序中开发一个RESTful接口(利用FOSRestBundle),我希望它总是返回一些有意义的JSON响应,即使非交互式身份验证失败(例如用户在登录会话期间被锁定)。现在它只是重定向到登录页面。
我虽然可以使用某些类型的Core Exception Listener来实现它,但我不知道要侦听哪些异常,或者它是否可能。
一些提示将不胜感激。
答案 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
当他实际登录时,照常进行,否则发送自定义回复。
我强烈建议您不要这样做,因为您需要维护更多代码并且还有更多错误,如果您想保护数据则更多。