1

我正在开发一个带有Hibernate Web 应用程序的Struts2 。我正在阅读Ian Roughley 所著的《实用 Apache Struts 2 web 2.0 项目》一书。在那本书中,作者展示了 3 种方法来进行访问 Web 资源的身份验证:基于容器、使用Acegi库和自定义模式。

因此,我的应用程序至少有 3 种模式,并且必须根据此访问操作。

我采用自定义模式,因为它最适合我(考虑到我正在使用Struts2进行开发)。

自定义模式将 aSecurityInterceptor和 aSecureStack用于struts.xml操作。@RequiresAuthentication当在我想提供限制的操作类的顶部添加注释时,身份验证工作。

下面是RequiresAuthentication书中给出的注解的定义:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresAuthentication {
}

所以作者明确指出,如果需要更复杂的基于角色的安全性,可以增强注释以指定允许调用操作的角色。所以我想知道应该如何为 3 种或更多模式实现此注释。

4

1 回答 1

0

因此,在您的自定义注释中添加一些变量(例如角色)并在拦截器中检查它的值。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresAuthentication {
   public String[] roles();
}

但是您确实应该考虑使用一些安全框架(例如 Spring Security、Apache Shiro)而不是您的自定义解决方案。

于 2012-11-16T11:55:55.173 回答