2014-06-28 30 views
1

我試圖使用FOSOAuthServerBundle。Symfony2 FOSOAuthServerBundle經過身份驗證但匿名

從我的iPhone應用程序,我得到正確的令牌從/ OAuth的/ V2 /令牌,我可以在我的數據庫看到正確的USER_ID中的accessToken和RefreshToken的條目。

打開_profile,我可以看到我驗證,但我的身份登錄匿名...... 爲什麼發生這種情況?

當試圖訪問/安全的/ API /我,我重定向到/登錄路徑...

有人可以幫助我嗎?

這裏我security.yml

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: sha512 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: ROLE_USER 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username_email 

    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     oauth_token: 
      pattern: ^/oauth/v2/token 
      security: false 
     oauth_authorize: 
      pattern: ^/oauth/v2/auth 
#   form_login: 
#    provider: fos_userbundle 
#    check_path: /oauth/v2/auth_login_check 
#    login_path: /oauth/v2/auth_login 
      anonymous: true 
     api: 
      pattern: ^/api 
      fos_oauth: true 
      stateless: true 
      anonymous: true 

     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_provider: form.csrf_provider 
       login_path: /login 
       check_path: /login_check 
      oauth: 
       resource_owners: 
        facebook:   "/login/check-facebook" 
        google:    "/login/check-google" 
       login_path:  /login 
       use_forward:  false 
       failure_path:  /login 

       oauth_user_provider: 
        #this is my custom user provider, created from FOSUBUserProvider - will manage the 
        #automatic user registration on your site, with data from the provider (facebook. google, etc.) 
        service: my_user_provider 
      logout:  true 
      anonymous: true 

     login: 
      pattern: ^/login$ 
      security: false 

      remember_me: 
       key: "%secret%" 
       lifetime: 31536000 # 365 days in seconds 
       path:/
       domain: ~ # Defaults to the current domain from $_SERVER 

    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: ^/oauth/v2/auth, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/secured, role: [ IS_AUTHENTICATED_FULLY ] } 

+2

用於路徑您的API防火牆設置爲^/api,您的訪問控制使用^/secured。 – ggioffreda

回答

0

我認爲你必須在你的security.yml,防火牆「API」下:

//... 

    api : 

    // ... 

     stateless : true 

    // ... 

你要發送的access_token在每次請求。

此外,如果你想獲得一個身份驗證的access_token,你必須與德參數「grant_type =密碼」的請求得到它。 使用此access_token,您的服務器將在每個請求中識別用戶。

是這樣的: PROVIDER_HOST/OAuth的/ V2 /令牌的client_id = CLIENT_ID & client_secret = CLIENT_SECRET & grant_type =密碼&用戶名= USERNAME &密碼= PASSWORD

?(來源:OAuth2 Explained: Part 3 - Using OAuth2 With Your Bare Hands

相關問題