1

我想要做的是一个简单的页面,它获取一个参数,它是一个对象的id

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

此页面必须防止未经授权的访问。我添加了@AuthorizeInstantiation("user")注释和托管标准 Wicket 安全支持,包括扩展AuthenticatedWebApplicationMainApplication中的getSignInPageClass()

问题是当我需要在使用原始参数授权后返回我的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 中参数的确切索引是什么(编码器只返回 indexedParameters,而不是 namedParameters - 或者我做错了什么?)。

也许有人以前遇到过这个问题?

4

1 回答 1

2

在您的 Siginpage 中,验证登录后,拨打continueToOriginalDestination();

这应该可以解决问题。

于 2013-04-10T11:31:37.127 回答