1

私がやろうとしているのは、オブジェクトのIDである 1 つのパラメーターを取得する単純なページです。

    @MountPath("share/${share_id}")
    public class IndexPage extends WebPage
    {
            public IndexPage(PageParameters parameters)
            {
                    String id = parameters.get("share_id").toString();
                    // etc...
            }
    }

このページは、不正なアクセスから保護する必要があります。@AuthorizeInstantiation("user")アノテーションを追加し、 AuthenticatedWebApplicationを拡張するMainApplicationのgetSignInPageClass()を含む標準の Wicket セキュリティ サポートを管理しました。

問題は、元のパラメーターで承認した後、 IndexPageに戻る必要がある場合です。私はいくつかの解決策を得ましたが、それをよりエレガントでより一般的な (普遍的な) ものにする必要があります。

  1. Application クラスのrestartResponseAtSignInPage()メソッドをオーバーライドする
  2. RequestCycleからパラメーターを取得します。

    final Request request = RequestCycle.get().getRequest();
    PageParametersEncoder encoder = new PageParametersEncoder();
    PageParameters parameters = encoder.decodePageParameters(request.getUrl());
    
  3. new RestartResponseAtInterceptPageException(getSignInPageClass(), newParameters);をスローしてそれらを渡します。

URLのパラメーターの正確なインデックスが何であるかを確認する必要があるため、これは良い解決策ではないことはわかっています(エンコーダーはnamedParametersではなくindexedParametersのみを返します-または、間違っていますか?)。

たぶん、以前にその問題に遭遇した人がいますか?

4

1 に答える 1

2

ログインを確認した後、Siginpage で次のように呼び出します。continueToOriginalDestination();

これでうまくいくはずです。

于 2013-04-10T11:31:37.127 に答える