2016-09-25 61 views
-1

我是Play Framework的新手。我正在通過創建各種類型的場景來練習(Play + Java)。與數據庫鏈接,使用JPA從數據庫中檢索數據,主要細節表單,將數據保存到數據庫等。用戶驗證 - Play Framework,Java

我想實現用戶認證。用戶登錄到應用程序。訪問應用程序用戶必須有權限。

例如:員工 - 添加/編輯/查看/刪除。某些用戶可能擁有所有授權,部分用戶只能查看或添加/編輯/刪除或僅編輯。即使在「員工編輯」選項中,用戶也只能編輯特定字段Emplyee的名字是不允許的,但員工的地址可以編輯。即現場級授權。

由於

+0

https://github.com/joscha/play-authenticate –

+0

和授權: https://github.com/schaloner/deadbolt-2 – bopa

回答

0
  1. 使用認證控制器來檢查用戶的登錄ID /密碼 class AuthController @Inject()(cache: CacheApi, cached: Cached, actorSystem: ActorSystem) extends Controller {

  2. 如果ID /口令是正確的,產生在一個UUID密鑰,並且所存儲的用戶對象(uservo)帶有UUID密鑰的內存緩存。密鑰可以存儲在瀏覽器cookie中。

val cacheTimeout = 10.minutes val key = UUID.randomUUID.toString cache.set(key, uservo, cacheTimeout) Ok().withSession(request.session + ("key" -> key))

  • 我們可以得到下面的HTML請求 「鍵」 值的cookie。如果可以從內存緩存中檢索密鑰,則用戶可以執行該操作。 記住重新設置cookie的值,或者在內存中緩存緩存uservo將10分鐘
  • 後超時

    (request.session.get("key").flatMap { key => cache.get[Uservo](key) } map { uservo => // need to set cache with "key" again, or else the memory will timeout in 10 minutes cache.set(request.session.get("key").get, uservo, cacheTimeout) // do the action.. }).orElse { // failed and return to login home page Some(Future(Redirect("/").withNewSession)) }