curl命令检查FOSRestBundle中的身份验证?

curl命令检查FOSRestBundle中的身份验证?,rest,authentication,curl,basic-authentication,fosuserbundle,Rest,Authentication,Curl,Basic Authentication,Fosuserbundle,FOSRestBundle在我的项目中工作得很好,但是没有身份验证。现在,我的目标是使用auth发出请求 为此,我在security.yml中添加了这个防火墙 firewalls: # ... rest_api: pattern: ^/api/ stateless: true http_basic: provider: fos_userbundle # ... access_contr

FOSRestBundle在我的项目中工作得很好,但是没有身份验证。现在,我的目标是使用auth发出请求

为此,我在security.yml中添加了这个防火墙

firewalls:
    # ...    
    rest_api:
        pattern: ^/api/
        stateless: true
        http_basic:
            provider: fos_userbundle
    # ...    
access_control:
    # ...    
    - { path: ^/api/, role: IS_AUTHENTICATED_FULLY }
为了检查这一点,我使用了以下shell命令:

curl -i http://localhost/tuto/web/app_dev.php/api/test/1
结果是:

HTTP/1.1 302 Found
Date: Fri, 11 Apr 2014 13:56:08 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.4.9-4ubuntu2.4
Set-Cookie: PHPSESSID=4dtr168vmj1eg523a07kbkjkh1; path=/
Cache-Control: no-cache
Location: http://localhost/tuto/web/app_dev.php/login
Vary: Accept-Language
X-Debug-Token: 220df7
Transfer-Encoding: chunked
Content-Type: application/json

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="refresh" content="1;url=http://localhost/tuto/web/app_dev.php/login" />

        <title>Redirecting to http://localhost/tuto/web/app_dev.php/login</title>
    </head>
    <body>
        Redirecting to <a href="http://localhost/tuto/web/app_dev.php/login">http://localhost/tuto/web/app_dev.php/login</a>.
    </body>
</html>
找到HTTP/1.1 302 日期:2014年4月11日星期五13:56:08 GMT 服务器:Apache/2.2.22(Ubuntu) X-Powered-By:PHP/5.4.9-4ubuntu2.4 设置Cookie:PHPSESSID=4dtr168vmj1eg523a07kbkjkh1;路径=/ 缓存控制:没有缓存 地点:http://localhost/tuto/web/app_dev.php/login 改变:接受语言 X-Debug-Token:220df7 传输编码:分块 内容类型:application/json 重定向到http://localhost/tuto/web/app_dev.php/login 重定向到。 如您所见,返回的代码是302,因为URL被重定向到
http://localhost/tuto/web/app_dev.php/login
因为我正在使用FOSUserBundle

现在,我想检查身份验证是否工作正常。我试过:
curl-Ihttp://localhost/tuto/web/app_dev.php/api/test/1 --user:password
但我仍然找到了302

我也尝试了这个
curl-I-H'Accept:application/json'-H'Authorization:Basic username:password'http://localhost/tuto/web/app_dev.php/api/test/1
但我还是找到了302

那么,有没有建议使用curl命令来检查RESTAPI中的身份验证

谢谢

注意:我在许多链接中尝试了解决方案,如:

找到了解决方案

你所要做的就是:

  • 按如下方式更改防火墙:
  • 防火墙:

    # ...    
    rest_api:
        # pattern: ^/api/ # to be changed as in the next line
        pattern: /api/.*  # the correct way
        stateless: true
        http_basic:
            provider: fos_userbundle
        # ...    
    access_control:
        # ...    
        # - { path: ^/api/, role: IS_AUTHENTICATED_FULLY } # to be removed
    
  • 对于curl命令,它必须如下所示:
  • curl-i-H'Accept:application/json'-H'Authorization:Basic YW1pbmU6c3RpZ21hdGFn'http://localhost/tuto/web/app_dev.php/api/test/1

    其中,YW1pbmU6c3RpZ21hdGFn是中“用户:密码”编码的结果


    希望它能帮助其他人。

    谢谢,base64的提示帮助了我。由于某些原因,如果使用“-u user:password”,cURL不会生成base64