我正在尝试在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上发送它...
我不明白这个错误...
答案 0 :(得分:2)
抱歉,我发现了......
这只是因为Symfony需要base64编码。 base64编码在Android上不起作用,因为该方法在编码数据之后添加一个新行,所以它不一样......
通过简单的修剪就可以了:
"Basic "+Base64.encodeToString((login+":"+pass).getBytes(), Base64.DEFAULT).trim();
我认为这可能会有所帮助。