Play框架,Scala:按角色验证用户

Ikr*_*rom 6 authentication scala playframework

我有用户角色:user,manager,admin.我需要在控制器(方法)中对它们进行身份验证.例如,只能admin删除(现在看起来像这样,需要更改只有管理员才有权限):

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

我有很多控制器和方法.我需要在处理请求之前进行身份验证(例如删除书籍).我的routes文件包含:

...
DELETE        /books/:id                  @controllers.Book.deleteBook(id: Int)
...
Run Code Online (Sandbox Code Playgroud)

有些路线只能由管理员和经理访问.有些适用于所有类型的用户.

我目前正在看deadbolt2scala授权模块.

你能推荐在playframework scala中验证多用户的最佳方法吗?

Age*_*men 1

我已经设法通过使用https://github.com/t2v/stackable-controller提供的 StackableControllers 来做到这一点 基本上,我使用 application.conf 提供的基本访问控制列表。我首先检查我的请求中是否有用户。如果有的话,我可以检查他是否有足够的访问权限来执行该操作。

这样的功能也可以使用 BodyParser 组合来实现。不过,我从未这样做过,所以其他人的建议可能对你更好。