2014-10-28 3 views
0

Java에서 Play 2.3.2 응용 프로그램을 작성하고 있습니다. 내 응용 프로그램에 필요한 일부 경로가있는 모듈을 사용합니다. 내 경로 파일에서, 나는 다음과 같은 진술을 포함한다 :Play 모듈에서 가져온 모든 URI의 사용 권한을 확인하십시오.

->  /recommendation/  recommendationsystem.Routes 

내가 /recommendation로 시작하는 모든 URI에 대한 사용 권한을 확인해야합니다. 사용자가 인증되면 요청이 실행되고 그렇지 않으면 홈 페이지로 리디렉션됩니다.

권한을 확인하는 작업을 구현 한 주석이 이미 있습니다.

어떻게해야 플레이에서 할 수 있습니까 ??

미리 감사드립니다.

답변

1

클래스 내의 모든 요청을 intercept 개 가능하고 특정 리소스에 인증이 필요한지 확인하십시오.

import play.GlobalSettings; 
import play.libs.F; 
import play.mvc.Action; 
import play.mvc.Http; 
import play.mvc.Result; 

import java.lang.reflect.Method; 

public class Global extends GlobalSettings { 

    @Override 
    public Action onRequest(Http.Request request, Method actionMethod) { 
     if (request.path().startsWith("/recommendation") && isNotAuthenticated()) { 
      return new Action.Simple() { 
       @Override 
       public F.Promise<Result> call(Http.Context context) throws Throwable { 
        return F.Promise.pure(redirect("/")); 
       } 
      }; 
     } 
     return super.onRequest(request, actionMethod); 
    } 

    private boolean isNotAuthenticated() { 
     // put your authentication check logic here 
     return true; 
    } 

} 
+0

안녕하세요,이 코드는 저에게 적합하지 않습니다. 문제는/recommendation으로 시작하는 모든 경로가 모듈 (스칼라로 작성 됨)로 자동으로 리디렉션된다는 것입니다. 이 문제를 어떻게 해결할 수 있습니까 ?? 모듈에는 Global.scala 클래스 개체를 사용할 수 없습니다. –

+0

전역 클래스는 메인 모듈에 정의되어야합니다. 루트 응용 프로그램 디렉토리에 배치했는지 또는 구성 파일 내에서 경로를 설정했는지 확인하십시오. application.global = "com.your.package.Global" –

+0

전역 파일은 기본 프로젝트에 있지만 "/recommendation "은 내 Global.java 클래스의 onRequest 메소드를 우회합니다. 다른 경우에는 onRequest 메소드가 올바르게 호출되었습니다. –

관련 문제