在Wicket
中,我必须使用@AuthorizeInstantiation
来限制基于角色的访问。 否则允许所有人访问。
我想要反向行为:默认情况下限制所有页面(仅在指定@AuthorizeInstantiation
时才允许)
怎么做?
目前您使用委托给AnnotationsRoleAuthorizationStrategy
的 RolesAuthorizationStrategy。它的代码说:
@Override
public <T extends IRequestableComponent> boolean isInstantiationAuthorized(
final Class<T> componentClass)
{
// We are authorized unless we are found not to be
boolean authorized = true;
...
目前,我认为除了创建一个以authorized = false
开头然后执行相同操作的自定义IAuthorizationStrategy
之外,别无他法。
您可以在 Wicket JIRA 上创建一个票证,使此初始值成为从构造函数参数初始化的成员字段。这样,您无需复制代码,就像new AnnotationsRoleAuthorizationStrategy(false)
一样简单
您可以做的是在包级别指定@AuthorizeInstantiation
。
package-info.java
:
@AuthorizeInstantiation("ADMIN")
package your_domain.your_app.your_package;
import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
但这不适用于子包。