java Struts 2-인증 인터셉터 이후 올바른 동작으로 리디렉션



인터셉터 (2)

나는 온라인으로 아무것도 찾을 수 없으므로 여기서 물어볼 것이다. 나는 strut2를 사용하고 있으며 액션의 개인 패키지를 가지고 있기 때문에 어떤 액션은 로그인이 필요하다. 그래서 나는 이것을 보안 패키지에 넣었다.

<interceptors>
    <interceptor name="authenticationInterceptor" class="com.koorde.interceptor.AuthenticationInterceptor"/>

    <interceptor-stack name="secureStack">
      <interceptor-ref name="authenticationInterceptor"/>
      <interceptor-ref name="defaultStack"/>    
    </interceptor-stack>
</interceptors>

<default-interceptor-ref name="secureStack"/>

<global-results>
    <result name="login" type="redirect">dologin</result>
    <result name="session_error" type="redirect"> html/error/hibernate_session.jsp</result>
    <result name="error" type="redirect"> html/error/hibernate_session.jsp</result>
</global-results>

그리고 물론 다른 행동 정의.

내 문제는 다음과 같습니다.

사용자가 자신의 개인 영역에 액세스하려고한다고 가정 해 보겠습니다. 그는 personalArea 링크를 클릭하면 로그인 페이지에서 자동으로 리디렉션됩니다 ( personalArea 는 보안 조치이므로). 내가 원한 것은 로그인 후 사용자가 홈 페이지가 아닌 personalArea 로 자동으로 리디렉션 (작업 계속)하는 것입니다.

그래서, 내가 원하는 것은 : 사용자가 보안 조치로 인해 시스템에 로그인 할 때, 로그인 후에 조치의 실행 (보안)이 계속됩니다.

어떻게해야합니까?


가능한 해결책 중 하나는 사용자가 URL을 가로 채는 것을 추적하는 것입니다. 인증 인터셉터에서 수행 할 수 있습니다.

String queryString = request.getQueryString();
session.put("savedUrl", request.getRequestURI()+(queryString==null?"":("?"+queryString))); 

동적 매개 변수로 전역 결과 사용

@Results({
  @Result(name = "return", type = "redirect", location = "${savedUrl}")
})

로그인 후 savedUrl 대한 세션을 savedUrl 하고 결과 "return" . 동적 매개 변수에 getter를 제공한다고 가정합니다.


결국 나는 그것을 가능하게 만들 수있었습니다. 기본적으로 로마 C가 제안한 해결책에서 놓친 것은 클래스 변수를 저장해야한다는 것입니다 (세션에서 가질뿐만 아니라).

개인 문자열 savedUrl;

public String getSavedUrl(){
    return savedUrl;
}

그것은 트릭을했다.

감사





actionresult