Symfony2基本http认证,可用于curl,但不适用于Android

Symfony2基本http认证,可用于curl,但不适用于Android,android,httpwebrequest,http-headers,symfony,Android,Httpwebrequest,Http Headers,Symfony,我正在尝试验证symfony2服务器上的用户。 身份验证在cli中使用curl: curl "http://localhost:8080/app_dev.php/app/user/profile.json?id=4" -u foo:bar --basic 但在安卓系统中,我总是会遇到401错误: A Token was not found in the SecurityContext. 我能做些什么来修复它 这是我的保安。yml: security: providers: fos

我正在尝试验证symfony2服务器上的用户。 身份验证在cli中使用curl:

 curl "http://localhost:8080/app_dev.php/app/user/profile.json?id=4" -u foo:bar --basic
但在安卓系统中,我总是会遇到401错误:

 A Token was not found in the SecurityContext.
我能做些什么来修复它

这是我的保安。yml:

security:
providers:
    fos_userbundle:
        id: fos_user.user_manager
encoders:
    BumpMe\UserBundle\Entity\User: sha512

firewalls:
    app:
        pattern: ^/app/.*
        stateless: true
        security: true

        http_basic:
            realm: "API"
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
        logout:       true
        anonymous:    true


access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/app/, role: ROLE_USER }

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN
另外,如何在base64中发送用户名和密码?因为目前在Android上它不需要base64,而curl在base64上发送它

我不明白这个错误…

很抱歉我发现了

只是因为Symfony想要一个base64编码的。 base64编码在Android上不起作用,因为该方法在编码的数据之后添加了一行新行,所以它不一样

只需简单的修剪即可:

"Basic "+Base64.encodeToString((login+":"+pass).getBytes(), Base64.DEFAULT).trim();
我认为这会有帮助