android - Symfony2 基本 http 身份验证,适用于 curl 但不适用于 Android

标签 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

但是对于 Android,我总是会收到 401 错误:

 A Token was not found in the SecurityContext.

我该怎么做才能修复它?

这是我的 security.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();

我认为这会有所帮助。

关于android - Symfony2 基本 http 身份验证,适用于 curl 但不适用于 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9054450/

相关文章:

java - 如何从底部设计圆形 View ?

android - 如何在android中设置动画切换按钮

Java:如何创建 HTTP 浏览 session

.net - 在.NET中使用httpWebRequest时出现“too many automatic redirections were attempted”错误消息

.net - 为什么我的 HTTP 缓存 header 不起作用?

javascript - Chrome 正在发送缓存控制 :no-cache header

java - 在处理 RecyclerView 列表项时使用继承是一种反模式吗?

android - 如何重新启动viewPager中的 fragment

http-headers - 来自 User-Agent HTTP header 的操作系统

php - 如何使用 php 显示来自 mysql 的多个图像(blob)?