1

Wicket中,我必须使用@AuthorizeInstantiation基于角色来限制访问。否则允许所有人访问。

我想要反向行为:默认限制所有页面(仅在@AuthorizeInstantiation指定时允许)

怎么做?

4

2 回答 2

2

目前您使用 RolesAuthorizationStrategy 委托给AnnotationsRoleAuthorizationStrategy. 它的代码说:

@Override
public <T extends IRequestableComponent> boolean isInstantiationAuthorized(
    final Class<T> componentClass)
{
    // We are authorized unless we are found not to be
    boolean authorized = true;
    ...

IAuthorizationStrategy目前,我认为除了创建一个开始authorized = false然后做同样的自定义之外别无他法。

您可以在 Wicket JIRA 创建票证,以使此初始值成为从构造函数参数初始化的成员字段。这样你就不需要复制代码,它会像new AnnotationsRoleAuthorizationStrategy(false)

于 2018-02-22T15:45:52.527 回答
0

您可以做的是指定@AuthorizeInstantiation包装级别。

package-info.java

@AuthorizeInstantiation("ADMIN")
package your_domain.your_app.your_package;

import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;

不过,这不适用于子包。

于 2018-03-30T10:30:31.303 回答