当前位置: 首页 > 知识库问答 >
问题:

app.user不能从不安全的区域进入

王伯寅
2023-03-14

如何从不安全的地区app.user?

所以我有一个从^/user开始的安全区域。

但我需要在每个人都可以进入且不安全的区域显示注销表单。这怎么可能?My security.yml:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        ###:
            algorithm: sha512
            encode-as-base64: true
            iterations: 10
        ###:
            algorithm: sha512
            encode-as-base64: true
            iterations: 10

    role_hierarchy:


    providers:
      admin:
        name: admin
        entity: { class: ###, property: login }
      user:
        name: user
        entity: { class: ###, property: login }        

    firewalls:
      admin:
        pattern: ^/admin
        form_login:
          login_path: ###_login
          check_path: ###_login_process
          default_target_path: /admin/dashboard
        anonymous: ~
        logout:
          path: /admin/logout
          target: /admin/login
        provider: admin
        remember_me:
            key:      "###"
            lifetime: 604800
            path:     /
            domain:   ~ 
      user:
        pattern: ^/user
        form_login:
          login_path: ###_login
          check_path: ###_login_process
          default_target_path: ###
        anonymous: ~
        logout:
          path: /user/logout
          target: /user/login
        provider: user
        remember_me:
            key:      "###"
            lifetime: 604800
            path:     /
            domain:   ~             


    access_control:        
        - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, roles: ROLE_ADMIN }
        - { path: ^/user/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/, roles: ROLE_USER }                   

共有2个答案

柯河
2023-03-14

您可以在一些不安全的区域获取app.user,因为Symfony安全性依赖于两种不同的机制:身份验证和授权。

身份验证由防火墙定义。一旦你进入防火墙,你就会得到一个令牌,最终会得到一个app.user,即使它是匿名的

授权与访问控制相关。这是第二步,您不能将访问控制规则置于防火墙之外。在这里,您将处理角色需求,例如,如果ROLE\u ANONYMOUS是enoug,如果您想要ROLE\u USER。。。

还有一件事:更复杂一点,防火墙可以允许或禁止匿名用户。默认情况下,这是正确的,因为您需要在yoru防火墙下登录并检查登录路径,尽管您不能“要求这些用户拥有除role\u ANONYMOUS之外的角色”(如果您这样做,您将有一个无限循环)。

樊宏义
2023-03-14

嗯,我改变了一点我的security.yml.所以目前一切正常。

      user:
        pattern: ^/   


    access_control:
        - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
        ...

更新1

似乎不需要access_controll。此外,由于某种原因(可能是缓存),匿名用户正在访问 /user区域

 类似资料:
  • WildFly中安全域和安全域的主要区别是什么? 独立的。xml 和

  • 我的域(domain.com和www.domain.com)有一个LetsEncrypt SSL证书。现在,我想在证书中添加workflow.domain.com。我尝试使用certbot的展开选项,命令如下: Certbot返回成功响应。但是,浏览器仍然显示不安全…… 所以,我已经吊销了证书,开始清理。 我用< code>certbot - apache运行了certbot。它正确地显示了我的3

  • 直到现在(遗留),身份验证工作所需的全部工作就是在subsystems->Security中创建一个具有正确名称的安全域(“referencesapplicationdomain”)。 我的web.xml: 我的jboss-web.xml: 我遵循Wildfly Elytron文档使用JBoss-CLI创建了安全域和http工厂。 当我签入jboss-cli时,我看到安全域已经创建。 然而,当我尝

  • 我想用一种颜色填充剩余的空白,但我找不到任何方法来做到这一点,我是ios开发的初学者 我的应用的照片:

  • 本节提供的源代码的例子来说明如何使用 JSSE 将不安全的 Socket 连接转为安全的 Socket 连接。本节中的代码摘自本书 Java SE 6 Network Security(Marco Pistoia 等著)。 第一个例子是“没有 SSL 的 Socket 实例”的示例代码,可以使用不安全的 Socket 设置客户端和服务器之间的通信。此代码是在“使用 SSL 的 Socket 实例”