2014-10-09 55 views
6

我有用戶角色:user,manager,admin。我需要在控制器(方法)中進行身份驗證。例如只有admin可以刪除(現在看起來這一點,需要改變,只有管理員應具有權限):玩框架,斯卡拉:按角色驗證用戶

def deleteBook(id: Int) = DBAction { 
    findById(id) match { 
     case Some(entity) => { 
      books.filter(_.id === id).delete 
      Ok("") 
     } 
     case None => Ok("") 
    } 
} 

我有許多控制器和方法。我需要在處理請求之前進行身份驗證(例如刪除書籍)。我的routes文件包含:

... 
DELETE  /books/:id     @controllers.Book.deleteBook(id: Int) 
... 

某些路由只能由管理員和管理員訪問。一些適用於所有類型的用戶。

我目前看到deadbolt2scala授權模塊用於播放。

你可以推薦在playframework scala中驗證多用戶用戶的最佳方法嗎?

回答

1

我已經設法通過使用https://github.com/t2v/stackable-controller 提供的StackableControllers來完成此操作。基本上,我使用由我的application.conf提供的基本訪問控制列表。我首先檢查我的請求中是否有用戶。如果有的話,我可以檢查他是否有足夠的訪問權限來執行該操作。

這樣的功能也可以使用BodyParser組合來實現。不過,我從來沒有這樣做,所以別人的建議可能會對你更好。