如何创建一个定制的拒绝访问处理器吗

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.8,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何创建一个定制的拒绝访问处理器吗

当你的应用程序抛出AccessDeniedException,你可以处理这个异常与服务返回一个自定义的响应。

每个防火墙环境可以定义自己的自定义拒绝访问处理程序:

  • YAML
  • XML
  • PHP
1 2 3 4 5
# app / config / security.yml防火墙:foo:#……access_denied_handler:app.security.access_denied_handler

处理程序必须实现AccessDeniedHandlerInterface。这个接口定义了一个方法调用处理()实现逻辑时所执行的当前用户访问被拒绝(发送邮件,日志消息,或通常返回一个自定义响应):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
名称空间AppBundle\安全;使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\安全\核心\异常\AccessDeniedException;使用欧宝娱乐app下载地址\组件\安全\Http\授权\AccessDeniedHandlerInterface;AccessDeniedHandler实现了AccessDeniedHandlerInterface{公共函数处理(请求美元请求,AccessDeniedException美元accessDeniedException){/ /……返回响应(美元内容,403年);}}

然后,注册拒绝访问的服务处理程序:

  • YAML
  • XML
  • PHP
1 2 3 4
# app / config / services.yml服务:app.security.access_denied_handler:类:AppBundle \安全\ AccessDeniedHandler

就是这样!任何AccessDeniedException抛出的喷火防火墙将会由您的服务。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。