0

私は CAS を使用しており、3.4.8 から 3.5.1 に更新したばかりです。私がほとんどを処理したと思う千の変更がありました。ただ、完了時のexternalRedirectはなぜか壊れているようです。login-webflow の最初にループバックするだけです。これはどのように起こりますか?

これは、到達している最終状態です。

  <!-- The "redirect" end state allows CAS to properly end the workflow while 
    still redirecting the user back to the service required. -->
  <end-state id="redirectView"
    view="externalRedirect:${requestScope.response.url}" />

org.springframework.webflow.action.ExternalRedirectActionこのメソッド(の)にブレークポイントを設定したため、到達していることがわかります。

protected Event doExecute(RequestContext context) throws Exception {
    String resourceUri = (String) this.resourceUri.getValue(context);
    context.getExternalContext().requestExternalRedirect(resourceUri);
    return success();
}

このメソッドが戻る前に resourceUri の値を調べると、このリクエストのリダイレクト先の URI が表示されます。

http://mycompany.com:8080/c/portal/login?redirect=%2Fweb%2Fguest%2Fhome&ticket=ST-4-jVOtEEZcy9bXdb4xiV3l-cas

ただし、そのブレークポイントから実行すると、そのページにリダイレクトされるのではなく、同じ login-webflow が最初からやり直されます。ここで何が起きてるの?どこを見ればいいですか?デバッグに関するヒントはありますか?

- - - - - - - - アップデート - - - - - - - -

そのため、コードをまったく変更せず、いくつかのブレークポイントを追加しただけで、期待どおりに動作するようになりました。ここで何が起こっているのかわかりませんが、最終的に実際のリダイレクトが発生する場所を見つけました。興味のある方のために、リダイレクトは次の場所で行われます。

org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handleFlowExecutionResult(
        FlowExecutionResult result, ServletExternalContext context,
        HttpServletRequest request, HttpServletResponse response, FlowHandler handler)
4

2 に答える 2

0

便利なものを見つけました。特定の問題に当てはまる場合と当てはまらない場合があります。ただし、このフローをサブフローとして呼び出すとview、end-state の引数は無視されます。

ただし、このフローを通常どおり呼び出すと、リダイレクトが行われます。これを修正するためにできることは、 のview-state代わりにを使用することend-stateです。ただし、これにより、フローと親フローが開いたままになります。

于 2012-11-29T19:19:01.297 に答える