2013-08-02 230 views
0

我構建的工作原理如下應用:REST API認證

作爲唯一一個後端我有一個REST API(僅適用於JSON)建有Symfony框架2.3.2 + FOSRESTBundle 。

這個API最初將有兩個客戶:

  • 在Android設備上運行的應用程序;
  • 使用AngularJS構建的Web應用程序,與API在相同的服務器上運行。

我會註冊,可以使用我的應用程序,每個公司可以與他們的角色註冊自己的企業用戶,這些用戶將只能訪問Web應用程序,通過通常的郵件/密碼的形式。

公司也可以註冊有限數量的Android設備,通過他們的IMEI(移動設備的國際唯一識別碼)來識別它們,這些設備將使用他們的IMEI向API進行身份驗證。

Android設備只能訪問有限的一組資源,而Web應用用戶可以訪問他們的角色允許的任何內容。

我需要:

  • 安全和統一的方式既進行身份驗證,通過他們的電子郵件/密碼的web應用程序的用戶和Android設備通過他們的IMEI;
  • 限制他們可以訪問的資源。

觀察:

  • 我HTTPS的API服務器。

關於如何實現這一點的任何想法?

+0

查看FOSOAuthServerBundle並使用不同類型的OAuth身份驗證。 –

+0

@Pazi我已經檢查過它,但在我的情況下無法識別用戶的適當授權類型。你可以幫幫我嗎? –

回答

0

獲取FOS用戶包。在你的用戶實體中,你可以添加一個類型屬性來檢查它是什麼類型的用戶(這很容易上手)。你也可以定義不同的用戶角色(值得檢查)。然後也做一個屬性「IMEI」。現在您的用戶帳戶已統一。

對於使用AngularJS登錄,您可以查看FOS User Bundle的代碼。看看如何從表單中獲取「用戶名」和「密碼」的值並由該包處理。然後,您可以使用此方法使用REST API登錄用戶。

對於您的IMEI用戶,您可以在「如何在symfony2中以編程方式登錄」進行谷歌搜索。然後,您可以編寫自己的代碼,僅檢查IMEI號碼(無密碼)並登錄用戶。

+0

我已經有一個Device實體(包含IMEI)和一個用戶實體分開。任何想法如何我可以使用它們? –

+0

你可以在他們兩個之間建立OneToOne關係。 – Flip