2010-05-25 4 views
4

Wicket의 웹 페이지를 암호로 보호하여 사용자가 로그인 한 경우에만 액세스 할 수 있도록하십시오.Wicket을 사용하여 페이지를 어떻게 암호로 보호합니까?

나는 로그인 페이지를 보여줄 페이지를 원한다. 사용자가 접근하려고했던 페이지.

개찰은 어떻게 이루어 집니까? 이미 로그인 페이지를 만들고 세션 클래스를 확장했습니다.

답변

7

프레임 워크 제공 방법은 애플리케이션 init() 방법에 추가하여, 예를 들어, 애플리케이션,위한 IAuthorizationStrategy 인스턴스를 제공하는 것이다 :

init() { 
    ... 
    getSecuritySettings().setAuthorizationStrategy(...) 
} 

삼 인증 기능의 동작 예를 개찰 재료 here에 인을하는 합리적으로 복잡한 것들을 보여줍니다. 아주 간단한 경우에는 SimplePageAuthorizationStrategy을보십시오. 아주 기본적인 수준에서,이 때문에 (링크 된 자바 독에서 촬영)처럼 사용할 수 있습니다 : 응답

SimplePageAuthorizationStrategy authorizationStrategy = new SimplePageAuthorizationStrategy(
    MySecureWebPage.class, MySignInPage.class) 
{ 
     protected boolean isAuthorized() 
     { 
      // Authorize access based on user authentication in the session 
      return (((MySession)Session.get()).isSignedIn()); 
     } 
}; 
getSecuritySettings().setAuthorizationStrategy(authorizationStrategy); 

편집

를 언급 그냥 있다면 내가 앞으로 가장 좋은 방법을 생각한다 그 클래스 자체보다는 SimplePageAuthorizationStrategy과 같은 것을 사용할 것입니다. 어떤 경우,

IAuthorizationStrategy authorizationStrategy = new AbstractPageAuthorizationStrategy() 
{ 
     protected boolean isPageAuthorized(java.lang.Class<Page.class> pageClass) 
     { 
      if (pageClass.getAnnotation(Protected.class) != null) { 
       return (((MySession)Session.get()).isSignedIn()); 
      } else { 
       return true; 
      } 
     } 
}; 

이 그럼 당신은 (링크는 소스 코드입니다) SimplePageAuthorizationStrategy에서 이루어집니다 무엇에 IUnauthorizedComponentInstantiationListener 비슷한을 등록해야합니다 것 : 나는 사용자 정의 주석 주석되는 페이지를 캡처하기 위해이 같은 짓을 예 :

new IUnauthorizedComponentInstantiationListener() 
{ 
    public void onUnauthorizedInstantiation(final Component component) 
    { 
    if (component instanceof Page) 
    { 
     throw new RestartResponseAtInterceptPageException(MySignInPage.class); 
    } 
    else 
    { 
     throw new UnauthorizedInstantiationException(component.getClass()); 
    } 
    } 
}); 
+0

어떻게 두 페이지 이상으로 SimplePageAuthorizationStrategy를 사용하나요? 첫 번째 매개 변수로 내 웹 페이지의 기본 클래스를 사용하지 않는 것이 좋습니다. – Kane

관련 문제