如何限制对特定游戏路线的访问

时间:2013-12-05 22:03:58

标签: scala playframework playframework-2.0

我正在将管理员区域作为我主项目的子项目。 在我的构建文件中,我有

val main = play.Project(appName, appVersion, appDependencies).dependsOn(admin)

在我的路线中我有

->          /admin                                  admin.Routes

管理区域工作正常,但我希望能够限制对具有Admin角色的用户的访问权限。

我试过这个全球

 @Override
    public Handler onRouteRequest(Http.RequestHeader request) {       
        if(UserInfo.getCurrent().hasRole(SecurityRole.Type.ADMIN)){
            if(request.path().startsWith("/admin")){
                return admin.Routes.routes().apply(Http.Context.current()._requestHeader());
            }
        }
        return super.onRouteRequest(request);    
    }
}

从当前上下文中抓取用户。但我收到了错误

RuntimeException: There is no HTTP Context available from here.

我想我可以使用Deadbolt在管理区域设置安全性,但我想,因为主文件路由到子项目,有一些简单的方法来限制从主项目的访问,但我还没有找到任何东西。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

在我的项目中,我使用deadbolt,一个游戏模块:https://github.com/schaloner/deadbolt-2-java

效果很好。

您可以使用

限制对控制器的访问
@Restrict(@Group("admin"))

其中admin是您当前用户登录的角色。请查看文档!

相关问题