应该如何为多个Web角色实现RequiresAuthentication批注?

时间:2012-11-15 05:54:42

标签: java authentication struts2 annotations security

我正在使用 Hibernate Web应用程序开发 Struts2 。我正在读这本书Practical Apache Struts 2 web 2.0 projects, by Ian Roughley。 在该书中,作者展示了3种访问Web资源的身份验证方法:基于容器,使用 Acegi 库和自定义模式

所以,我的应用程序至少有3种模式,必须根据这种情况访问操作。

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

自定义模式使用SecurityInterceptorSecureStack进行 struts.xml 操作。如果在我想要提供限制的操作类顶部添加了@RequiresAuthentication注释,则身份验证可以正常工作。

以下是本书给出的RequiresAuthentication注释的定义:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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