Ela*_*hts 2 security authentication firewall access-control symfony
我正在尝试利用Symfony的身份验证和授权功能,但是我对我的security.yml文件看起来有点困惑.
我希望实现以下目标:
1)路由/和/ join(对每个人都是可用的 - 不需要登录).
2)所有其他路由都需要登录/密码.
3)/ adimin路由应仅限于管理员用户.
4)所有用户都应该针对数据库进行身份验证.
我有第4项想出来(我认为) - 见下文.我不确定这个administrators:词是什么意思.这是否只表示管理员使用User类?应该说users:还是其他什么?
security:
encoders:
MySite\Bundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 1
providers:
administrators: (??? what doest his mean ???)
entity: { class: MySiteBundle:User }
Run Code Online (Sandbox Code Playgroud)
更重要的是 -
对于第1,2和3项,我不知道该放什么.我在该firewalls:部分和access_control:部分下面有一堆条目然而它只是不起作用或有意义.有人可以发布什么security.yml应该看起来像我想要在数字1 - 3完成的目标?
小智 9
以下是我根据您的需求了解的配置示例:
security:
encoders:
"MySite\Bundle\Entity\User": { algorithm: sha1, encode_as_base64: false, iterations: 1 }
providers:
database: { entity: "MySite\Bundle\Entity\User" }
firewalls:
dev:
pattern: ^/(_profiler|_wdt|css|js)
security: false
main:
pattern: ^/
provider: database
anonymous: true
# the rest of your firewall's config
access_control:
- { path: ^/(join)?$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: IS_AUTHENTICATED_FULLY }
Run Code Online (Sandbox Code Playgroud)
我们为用户实体配置密码编码器,并为其定义提供程序.
然后我们定义一个dev防火墙来停用debug/profiler/asset pathes的安全性,以及一个main将成为应用程序真正防火墙的防火墙.最后一个防火墙将使用先前定义的用户提供程序并允许匿名用户(重要!).
最后,在访问控制映射中,我们首先为允许匿名用户的pathes定义规则,然后为需要用户对站点其余部分进行完全身份验证的通用规则.
| 归档时间: |
|
| 查看次数: |
9535 次 |
| 最近记录: |