php - 正则表达式:一切,但不是 [字符串]
问题描述
我在 symfony 下工作,我想在安全性方面配置我的模式,以便它适用于除特定路径之外的所有内容。(/家)
我做到了,但它不起作用,我不知道 Regex :
pattern: ^/(?!/accueil).*$
我必须把我所有的链接放在那里,这给出了:
pattern: ^/(admin|profile|package|securiteInformatique|logout)
所以把“all escept”/accueil 更容易
我的security.yml:
# app/config/security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
app:
id: bes_auth.user_provider
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
# anonymous: true
# public:
# pattern: ^accueil
# security: false
# anonymous: true
main:
logout_on_user_change: true
# pattern: ^/(admin|profile|packages|securiteInformatique|logout)
#pattern: ^/(?!accueil)
form_login:
check_path: fos_user_security_login_check
login_path: /login_check
guard:
authenticators:
- app.security.login_form_authenticator
- bes_auth.authenticator
entry_point: Site\PagesBundle\Security\LoginFormAuthenticator
logout:
path: deconnexion #nom de la route de déconnexion
target: /
success_handler: bes_auth.authenticator
anonymous: true
access_control:
- { path: ^/admin, role: ROLE_SUPER_ADMIN }
- { path: ^/accueil, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
解决方案
您应该public
完全删除防火墙,pattern
从main
防火墙中删除,并使用access_control
来处理权限。
Symfony 从上到下读取以下配置,应用它找到的第一条规则。因此,任何以开头的 URL/accueil
都将被您的main
防火墙检查,但将允许公众在不登录的情况下查看(因为您拥有anonymous: true
)。每个其他 URL(不以 开头/accueil
)都需要该ROLE_USER
角色,因此将强制进行身份验证。
access_control:
- { path: ^/admin, role: ROLE_SUPER_ADMIN }
- { path: ^/accueil, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
推荐阅读
- terraform - Terraform Cloud 工作空间结构
- ios - 如何在 iOS 上访问 GitHub 桌面 Web 视图
- react-native - 不变违规:运行 react-native 应用程序时未注册“main”
- raspberry-pi - 覆盆子有时会失去坐骑
- javascript - 错误:未捕获(承诺中)DOMException:无法在“CanvasRenderingContext2D”上执行“getImageData”:源高度为 0
- cube.js - 如何在 cube.js 架构中的 sql 中传递动态值?
- flutter - 如何在颤动的有状态小部件中拥有无状态代码?
- reactjs - 当点击 React 按钮时,url/route 会发生变化。但是与 url/route 关联的内容不会呈现
- javascript - 将图像修剪到内容框忽略顶部/底部的文本?
- python - TypeError: dtype 对象的图像数据无法转换为 float 修复