注意:Guard组件在symfony2.8被引入。这个Guard验证组件允许你一次轻松的使用许多不同的验证器。
Entry Point是一个服务id(你的验证器)start()方法被调用去启动验证过程。
多个验证器分享这个Entry Point
有时你想要去给你用户提供不同的验证机制,像一个登录表单还有一个facebook登录,Entry Point会将用户定向到登录页面。那么,你要在你的配置中告诉Entry Point,你要使用的机制。
这就是你配置的安全:
1 2 3 4 5 6 7 8 9 10 11 |
# app/config/security.yml security: # ... firewalls: default: anonymous: ~ guard: authenticators: - app.form_login_authenticator - app.facebook_connect_authenticator entry_point: app.form_login_authenticator |
对于这个方法这里是一个限制 – 你必须使用一个Entry Point。
多个验证器使用单独的Entry Points
然而,有些案例需要你的验证器保护应用程序的不同部分。例如,你有一个登录表单保护你应用程序的前台部分安全区域还有api tokens保护api。你的一个防火墙只能配置一个Entry Point,解决方案是将配置分为两个独立的防火墙:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# app/config/security.yml security: # ... firewalls: api: pattern: ^/api/ guard: authenticators: - app.api_token_authenticator default: anonymous: ~ guard: authenticators: - app.form_login_authenticator access_control: - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/api, roles: ROLE_API_USER } - { path: ^/, roles: ROLE_USER } |