我正在使用 Hibernate Web应用程序开发 Struts2 。我正在读这本书Practical Apache Struts 2 web 2.0 projects, by Ian Roughley。 在该书中,作者展示了3种访问Web资源的身份验证方法:基于容器,使用 Acegi 库和自定义模式
所以,我的应用程序至少有3种模式,必须根据这种情况访问操作。
我采用自定义模式,因为它最适合我(考虑到我正在使用 Struts2 进行开发)。
自定义模式使用SecurityInterceptor
和SecureStack
进行 struts.xml 操作。如果在我想要提供限制的操作类顶部添加了@RequiresAuthentication
注释,则身份验证可以正常工作。
以下是本书给出的RequiresAuthentication
注释的定义:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresAuthentication {
}
所以作者清楚地知道,如果需要更复杂的基于角色的安全性, 可以增强注释以指定允许调用操作的角色。 所以我想知道如何为3种或更多模式实现这种注释。
答案 0 :(得分:0)
因此,在您的自定义注释(例如角色)中添加一些变量,并在拦截器中检查它。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresAuthentication {
public String[] roles();
}
但你真的应该考虑使用一些安全框架(例如Spring Security,Apache Shiro)而不是你的自定义解决方案。