我正在尝试对我的 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/