【问题标题】:app.user is not accessible from unsecured area无法从不安全区域访问 app.user
【发布时间】: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 }

【问题讨论】:

    标签: security symfony acl


    【解决方案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 以外的角色(如果您这样做,您将有一个无限循环)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-26
        • 2019-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多