我有用户角色: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中验证多用户的最佳方法?
答案 0 :(得分:1)
我设法通过使用https://github.com/t2v/stackable-controller提供的StackableControllers来实现这一目标 基本上,我使用application.conf提供的基本访问控制列表。我首先检查我的请求中是否有用户。如果有,我可以检查他是否有足够的访问权限来执行操作。
这样的特征也可以使用BodyParser合成来实现。不过,我从来没有这样做过,所以其他人的建议对你来说可能更好。