symfony5.1身份验证器匿名用户访问与旧版本的匿名用户访问

很久没用symfony了,今天使用了一下做个用户访问权限配置的简单记录。

symfony5.1以前的匿名用户访问是直接在防火墙配置:

anonymous:true

配置了这个选项后,在debug工具栏中就可以看到

symfony匿名用户访问debug显示详细信息

可以看到我访问的这个URL配置的是名称为test防火墙,这个是我自己配置来测试使用的。

5.1以前的版本匿名访问就是这样子的,比如一些前台展示页面,登陆页面等等这些不需要授权的页面都可以用这个防火墙规则。


但是在5.1版本后多了一个安全配置:

# config/packages/security.yaml
enable_authenticator_manager: true

如果把这个验证管理器启用那么anonymous:true 这个配置就必须要删除或者设为false,也不能设置成lazy,否则就抛异常,如下错误信息,还会影响bin/console命令。

#anonymous:lazy 报错如下
The authenticator manager no longer has "anonymous" security. Please remove this option under the "test" firewall and add "lazy: true".

或者

#anonymous:true 报错如下
The authenticator manager no longer has "anonymous" security. Please remove this option under the "test" firewall.


如果启用了新版本的验证管理器后,在access_control配置中怎么让某些页面匿名访问呢,有一个新的安全属性PUBLIC_ACCESS需要如下配置:

#如下配置即可,将所有不需要授权的页面都加上PUBLIC_ACCESS属性
- { path: ^/login, roles: PUBLIC_ACCESS }







Tags symfony php

留言(0)

评论