2012-01-29 108 views
4

我试图在我的symfony2服务器上认证用户。 认证,卷曲工程CLI:Symfony2基本http认证,适用于curl,但不适用于Android

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和卷曲发送它的base64 ...

我不明白这个错误...

回答

2

对不起,我找出...

这是只是因为Symfony想要一个base64编码。 base64编码并没有在Android上工作,因为,该方法将编码DATAS所以后添加一个新行,这是不一样的......

用一个简单的装饰一下的罚款:

"Basic "+Base64.encodeToString((login+":"+pass).getBytes(), Base64.DEFAULT).trim(); 

我认为这可能会有所帮助。

相关问题