无法从不安全区域访问 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名称

WindowsCluster 由于在更新安全DNS区域时访问被拒绝,群集网络资源无法注册一个或多个关联的DNS名称

线程间操作无效: 从不是创建控件的线程访问它的三种方法

横向越权测试—安全漏洞

智能卡文件结构的安全访问条件