2014-10-31 59 views
0

我無法弄清楚如何構建我的應用程序。 它目前是使用普通控制器,樹枝視圖等構建的Web應用程序,並使用FOS用戶包進行身份驗證。在這個應用程序中,可以創建應該被看作是「移動用戶」的實體。現在我需要一個移動應用程序的API,用於「移動用戶」登錄,但我無法弄清楚應該如何構建這個身份驗證。Symfony2,正常+休息認證

我應該與用戶一起在用戶表中創建用戶嗎?是否有可能要求用戶具有特定角色才能登錄正常的登錄頁面?

或者我應該爲「移動用戶」實體添加用戶名和密碼列,併爲api進行自定義登錄。但是,這是如何完成的?我正考慮在移動應用程序中使用angularjs,如果這對解決此問題有任何影響。

+0

您想要移動用戶必須登錄嗎?或者該用戶是否應被視爲已通過身份驗證? – Chausser 2014-10-31 21:40:22

+0

由於將有多個移動用戶,他們將不得不登錄。 – 2014-10-31 21:44:25

+0

移動用戶是否與其他用戶不同? – Chausser 2014-10-31 21:45:51

回答

0

一個可能的解決方案將使用FOSOAuthServerBundle

在這種情況下,你可以有你一樣的地方讓您的用戶同時使用網絡應用和移動應用。用戶可以使用Web和移動應用程序中的相同憑據進行身份驗證 - 但通過撥打ajax可以完成移動應用程序的身份驗證。

感謝oAuth您不會將登錄名/密碼保存在您的移動應用程序中。 Bundle本身是以一種與Symfony完美結合的方式編寫的。

要使用不同的安全訪問不同的資源,你只是配置不同的防火牆:

security.yml

security: 
    firewalls: 
     oauth_token: 
      pattern: ^/oauth/v2/token 
      security: false 
     api: 
      pattern: ^/api 
      fos_oauth: true 
      stateless: true 
     web_secured: 
      pattern: ^/ 
      stateless: true 
      your_security_factory:  true 

檢查這些資源的更多信息:

0

你不必使用不同的用戶提供,但你需要在security.yml配置不同的防火牆:

firewalls: 
    api_firewall: 
     pattern: "^/api/" 
     form_login: 
      check_path: /api/login_check 
      login_path: /api/login 

,那麼你仍然可以顯示用戶登錄表單。使用角度,讓它過帳到check_path。 Symfony使用cookie來存儲驗證信息,因此您可能必須配置角度來接受並在隨後的請求中傳遞這些信息。

如果你不想這樣做,你可以使用一個API密鑰和編寫自定義的認證實施SimplePreAuthenticatorInterface