我正在我的应用程序中开发一个 RESTful 接口(使用 FOSRestBundle),我希望它始终返回一些有意义的 JSON 响应,即使非交互式身份验证失败(例如,用户在登录会话期间被锁定)。现在它只是重定向到登录页面。
我虽然可以使用某种核心异常监听器来实现它,但我不知道要监听哪些异常,甚至不知道它是否可能。
一些提示将不胜感激。
我正在我的应用程序中开发一个 RESTful 接口(使用 FOSRestBundle),我希望它始终返回一些有意义的 JSON 响应,即使非交互式身份验证失败(例如,用户在登录会话期间被锁定)。现在它只是重定向到登录页面。
我虽然可以使用某种核心异常监听器来实现它,但我不知道要监听哪些异常,甚至不知道它是否可能。
一些提示将不胜感激。
您必须从路线中删除“登录约束”。
例如,如果您有类似的东西,您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
当他实际上登录时,照常进行,否则发送您的自定义响应。
我强烈不建议您这样做,因为您需要维护更多代码并且要犯更多错误,如果您想保护数据更是如此。