2016-07-10 33 views
1

我並沒有真正意識到認證機制,所以我很難弄清楚如何用Angular前端和Play Framework(Java)後端設計認證機制。其基本思想是:使用Angular + Play Framework進行SPA認證(Java)

  1. 角度前端將REST身份驗證調用發送到Play Framework身份驗證機制。
  2. 遊戲產生一些象徵性的(其發送到角)
  3. 角可以基於該令牌

其他REST調用在理想情況下,我想喜歡使用CSRF令牌。我發現關於集成Angular和Play身份驗證的來源非常少,並且它們都不足以在我的應用上實現它。當然,關於整合Javascript和Play認證的來源有很多,但這是完全不同的情況。

所以我的問題是如何設計,使用什麼框架/功能使其工作以及如何在該區域中集成Angular和Play。實現這一點的一般步驟就足夠了,即:在Play中使用該認證框架,在Play中實現該功能,在Angular中使用該方法,以這種方式連接所有內容等等。當然,更具體的指令也是受歡迎的。最後一件事,我想在數據庫中存儲密碼散列,任何有關如何散列它們的提示(任何Play機制或其他框架)也會有所幫助。

回答

0

您可以使用類似JWT的東西來創建令牌並將其提供給您的角度應用程序。流程基本上是這樣的:

  • 用戶提供身份驗證(例如:電子郵件和密碼);
  • 您將該信息發送到Play,以便它可以檢查憑據並在一切正常時生成令牌。該令牌可以包含很多信息,例如用戶擁有的權限/角色,創建日期等。
  • 獲得令牌之後,可以在角度應用程序中使用它。在遊戲方面,你必須檢查所提供的令牌是有效的(它是從你的應用程序生成的,並沒有過期)

請注意您可能希望將這些標記(例如存儲:在數據庫)如果你想實現像令牌黑名單或自動更新令牌的東西...

其他選項是生成自己的某種令牌(例如:base64隨機字符串),並將其存儲在數據庫中您可能需要的信息(過期日期等),甚至只是在Play中設置一個cookie,並讓您的應用程序使用它(您可能無法直接在Angular中使用默認的Play Cookie,因爲它只是HTTP)。

關於密碼哈希,你可以使用任何scala/java庫,但你應該選擇一些安全的。通常我使用BCrypt,但還有很多其他選項(scrypt,pbkdf2等)

相關問題