无法从不安全区域访问 app.user
Posted
技术标签:
【中文标题】无法从不安全区域访问 app.user【英文标题】:app.user is not accessible from unsecured area 【发布时间】:2012-07-27 00:07:53 【问题描述】:如何从不安全区域获取 app.user?
所以我有从 ^/user 开始的安全区域。
但我需要在每个人都可以访问且不安全的区域显示注销表单。这怎么可能?我的 security.yml:
安全: 编码器: Symfony\Component\Security\Core\User\User:明文 ###: 算法:sha512 编码为base64:真 迭代次数:10 ###: 算法:sha512 编码为base64:真 迭代次数:10 角色层次结构: 提供者: 行政: 名称:管理员 实体:类:###,属性:登录 用户: 姓名:用户 实体:类:###,属性:登录 防火墙: 行政: 模式:^/管理员 表单登录: 登录路径:###_登录 check_path: ###_login_process default_target_path: /admin/dashboard 匿名:~ 登出: 路径:/admin/logout 目标:/admin/login 提供者:管理员 记得我: 钥匙: ”###” 寿命:604800 小路: / 域名:~ 用户: 模式:^/用户 表单登录: 登录路径:###_登录 check_path: ###_login_process 默认目标路径:### 匿名:~ 登出: 路径:/用户/注销 目标:/用户/登录 提供者:用户 记得我: 钥匙: ”###” 寿命:604800 小路: / 域名:~ 访问控制: - 路径:^/admin/login,角色:IS_AUTHENTICATED_ANONYMOUSLY - 路径:^/admin/,角色:ROLE_ADMIN - 路径:^/user/login,角色:IS_AUTHENTICATED_ANONYMOUSLY - 路径:^/user/,角色:ROLE_USER【问题讨论】:
【参考方案1】:好吧,我稍微改变了我的 security.yml。所以目前一切正常。
用户: 模式:^/ 访问控制: - 路径:^/,角色:IS_AUTHENTICATED_ANONYMOUSLY ...更新 1
似乎不需要 access_controll 中的那一行。此外,由于某种原因(可能是缓存),匿名用户正在访问 /user 区域
【讨论】:
【参考方案2】:您可以在一些不安全的区域获取 app.user,因为 Symfony 的安全性依赖于 2 种不同的机制:身份验证和授权。
身份验证由防火墙定义。一旦你进入防火墙,你就会得到一个令牌,最终得到一个 app.user,即使它是anonymous
。
授权与access_control
规则有关。这是第二步,您不能将访问控制规则放在防火墙之外。在那里你将处理 ROLE 要求,例如如果ROLE_ANONYMOUS
足够,如果你想要ROLE_USER
...
还有一件事:为了进一步复杂化,防火墙可以允许或禁止匿名用户。默认情况下是真的,因为在 yoru 防火墙下需要让您登录和 login_check 路径,但您不能要求用户拥有除ROLE_ANONYMOUS
以外的角色(如果您这样做,您将有一个无限循环)。
【讨论】:
以上是关于无法从不安全区域访问 app.user的主要内容,如果未能解决你的问题,请参考以下文章
WindowsCluster 由于在更新安全DNS区域时访问被拒绝,群集网络资源无法注册一个或多个关联的DNS名称