techpaf / annotation-firewall-bundle
Symfony2 扩展包
dev-master / 0.1.x-dev
2013-12-04 01:57 UTC
Requires
- php: >=5.3.2
- symfony/framework-bundle: ~2.0
This package is not auto-updated.
Last update: 2024-09-23 14:05:09 UTC
README
此扩展包允许您通过注释为您的 Symfony2 项目配置防火墙。它受到以下内容的启发:Matthias Noback 的博客,NelmioApiDocBundle 和 JMSSerializerBundle。
安装
更新您的 composer.json
文件
{ "require": { "techpaf/annotation-firewall-bundle": "0.1.*@dev" } }
在 app/AppKernel.php
中注册扩展包
// app/AppKernel.php public function registerBundles() { return array( // ... new TechPaf\AnnotationFirewallBundle\TechPafAnnotationFirewallBundle(), ); }
使用方法
AnnotationFirewallBundle 使用注释来指示哪些路由应该受到保护。
Security.yml
在您的 security.yml
文件中,您需要注册由扩展包提供的请求匹配器,而不是使用类似 pattern: ^/api/
的模式。
# app/config/security.yml # ... firewalls: any_firewall: #pattern: ^/api/ # No need of the pattern anymore request_matcher: techpaf.annotation_firewall.annotation_request_matcher
您可以使用它与多个防火墙一起使用。例如
firewalls: dev: # default Firewall pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false fos_secured: # FOSUserBundle Firewall pattern: ^/admin/ # ... wsse_secured: # MopaWSSEAuthenticationBundle Firewall request_matcher: techpaf.annotation_firewall.annotation_request_matcher # ...
注释
然后您需要配置每个您想要使用此扩展包进行保护的控制器。
<?php namespace TechPaf\ExampleBundle\Controller; // ... use TechPaf\AnnotationFirewallBundle\Annotation\FirewallExclude; use TechPaf\AnnotationFirewallBundle\Annotation\FirewallExclusionPolicy; /** * @FirewallExclusionPolicy("NONE") */ class MyController extends Controller { /** * @Route("/secured") * @Template() **/ public function securedAction() { return array('secured' => true); } /** * @Route("/not_secured") * @Template() * * @FirewallExclude **/ public function notSecuredAction() { return array('secured' => false); } }
有三个注释
- @FirewallExclusionPolicy
- @FirewallExclude
- @FirewallExpose
@FirewallExclusionPolicy
此注释指定了控制器中每个路由的默认策略。它可以有两个值:ALL
或 NONE
。
ALL
表示除非您添加@FirewallExpose
注释,否则每个路由都将从防火墙中排除NONE
表示除非您添加@FirewallExclude
注释,否则每个路由都将添加到防火墙中
默认排除策略是 ALL
,因此除非您添加注释,否则不会使用 AnnotationFirewallBundle 保护任何路由。
@FirewallExclude
此注释从防火墙中排除特定路由(路由不受保护)
@FirewallExpose
此注释将特定路由添加到防火墙中(路由受到保护)
待办事项
接下来的更新将包括
- 允许多个防火墙同时使用 AnnotationFirewallBundle
- 添加缓存