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

时间:2014-10-09 10:21:10

标签: scala authentication playframework

我有用户角色:usermanageradmin。我需要在控制器(方法)中对它们进行身份验证。例如,只有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 个答案:

答案 0 :(得分:1)

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

这样的特征也可以使用BodyParser合成来实现。不过,我从来没有这样做过,所以其他人的建议对你来说可能更好。