2014-10-09 81 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组合来实现。不过,我从来没有这样做,所以别人的建议可能会对你更好。