Wicket实例化

Wicket实例化,wicket,role-base-authorization,Wicket,Role Base Authorization,在Wicket中,我必须使用@AuthorizeInstantiation来限制基于角色的访问。否则,所有用户都可以访问 我想要反向行为:默认情况下限制所有页面(仅当指定了@AuthorizeInstantiation时才允许) 如何做到这一点?目前,您正在使用角色授权策略,该策略授权给注释RoleAuthorizationStrategy。它说: @覆盖 公共布尔值已授权安装( 最终类(组件类) { //我们被授权,除非我们被发现不是 布尔值=真; ... 目前,除了创建一个自定义的iaau

Wicket
中,我必须使用
@AuthorizeInstantiation
来限制基于角色的访问。否则,所有用户都可以访问

我想要反向行为:默认情况下限制所有页面(仅当指定了
@AuthorizeInstantiation
时才允许)


如何做到这一点?

目前,您正在使用角色授权策略,该策略授权给
注释RoleAuthorizationStrategy
。它说:

@覆盖
公共布尔值已授权安装(
最终类(组件类)
{
//我们被授权,除非我们被发现不是
布尔值=真;
...
目前,除了创建一个自定义的
iaauthorizationstrategy
,它以
authorized=false
开始,然后执行相同的操作之外,我看不到其他方法


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

您可以做的是在包级别指定
@authorization实例化

package info.java

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

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

但这不适用于子包。

是的,但请不要使用
布尔值
,而是直接显示发生了什么的
枚举
。例如
defaultauthorization.ALLOW
defaultauthorization.DENY
。这使代码更易于阅读。
@AuthorizeInstantiation("ADMIN")
package your_domain.your_app.your_package;

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