我正在使用 access_control (securiry.yml) 来控制对我的页面的访问。像那样:
- { path: ^/, roles: ROLE_USER }
如果未连接的用户尝试访问,他将被重定向。好的,很好。
但是有些 url 可以与 Ajax 一起使用。我希望 access_control 在这种情况下返回一个 json 数据(未连接)。
是否可以 ?
最佳答案
你必须自己写AuthenticationHandler
它将实现以下两个接口(interface):
class AuthenticationHandler implements AuthenticationFailureHandlerInterface,
AuthenticationSuccessHandlerInterface
在该处理程序中,您应该定义两个方法
onAuthenticationFailure()
和 onAuthenticationSuccess()
在它们里面检查是否
$request->isXmlHttpRequest()
if ($request->isXmlHttpRequest()) {
...
return new Response($json);
} else {
...
return new RedirectResponse($url);
}
别忘了在
security.yml
中设置你的监听器。firewalls:
main:
....
your_form_login:
...
failure_handler: your.authentication_handler
success_handler: your.authentication_handler
关于symfony - 安全访问控制 : specific return (json) if ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141625/