2013-12-05 3 views
1

Я работаю над областью администратора в качестве подпроекта моего основного проекта. В моем файле сборка у меня естьКак ограничить доступ к определенному игровому маршруту

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

и в моих маршрутах я имею

->   /admin         admin.Routes 

админка прекрасно работает, но я хочу, чтобы иметь возможность ограничить доступ к тем пользователям, которые имеют роль администратор ,

Я попробовал этот Глобальной

@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. 

Я полагаю, я мог настроить безопасность в области администрирования с помощью засов, но я полагал, что, поскольку основные файловые маршруты в подпроекта будет какая-то простой способ просто ограничить доступ основной проект, но я ничего не нашел.

Любая помощь будет оценена по достоинству.

+0

Я бы сделал это с помощью Action Composition: http://www.playframework.com/documentation/2.2.1/JavaActionsComposition – adis

ответ

2

В моем проекте я использую засов, модуль для игры: https://github.com/schaloner/deadbolt-2-java

Он работает очень хорошо.

Вы можете ограничить доступ к контроллеру с

@Restrict(@Group("admin")) 

где админ роль текущего пользователя, вошедшего в систему. Проверьте документы!

Смежные вопросы