【问题标题】:FOSRestBundle ignores unauthorized challenge configFOSRestBundle 忽略未经授权的质询配置
【发布时间】:2014-11-27 04:33:53
【问题描述】:

我正在创建一个 REST-API,目前已将基本身份验证定义为身份验证。
Symfony 防火墙配置:

secured_area:
    pattern:    ^/
    anonymous: false
    http_basic:
        realm: "Secured Basic Auth Area"

如果我执行未经身份验证的请求,我会得到正确的标头,这会导致正确的行为:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Secured Basic Auth Area"
...

但现在的问题是,如果我通过浏览器发出请求,我总是会显示 Basic Auth 弹出窗口。为了防止这种情况,我可以使用 FOSRestBundle 的 unauthorized_challenge 配置更改为自定义身份验证质询。强硬它不会改变返回的标题。

其余包的配置:

fos_rest:
    unauthorized_challenge: "xxxBasic realm=\"Foo Area\""
    access_denied_listener:
        json: true

FOSRestBundle 版本是 1.4.2,Symfony 版本是 2.3.18。

知道忽略 FOSRestBundle 设置可能是什么问题吗?

【问题讨论】:

    标签: php rest symfony fosrestbundle


    【解决方案1】:

    解决了,问题是:

    我有一个 kernel.request 侦听器正在抛出 AuthenticationException,这似乎导致了进一步传播事件失败并且未正确调用 RestBundle 侦听器的问题。

    为了完整起见,在修复之后我遇到了另一个问题,即响应总是包含异常作为 HTML 输出。为了解决这个问题,我还必须在 Twig 配置中配置 FOSRestBundle 异常控制器。

    我的 app/config.yml 现在看起来像这样(对于适当的部分):

    twig:
        debug:            "%kernel.debug%"
        strict_variables: "%kernel.debug%"
        # Handle expections via the FOSRestBundle
        exception_controller: 'FOS\RestBundle\Controller\ExceptionController::showAction'
    
    fos_rest:
        unauthorized_challenge: "xxxBasic realm=\"Foo Area\""
        access_denied_listener:
            json: true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 2011-10-12
      • 2019-05-04
      • 2020-06-26
      • 1970-01-01
      相关资源
      最近更新 更多