RequiresAuthentication

RequiresAuthentication

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

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

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

定制模式对struts.xml操作使用SecurityInterceptorSecureStack。在要提供限制的操作类顶部添加@RequiresAuthentication批注时,身份验证有效。

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

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


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

最佳答案

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

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


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

10-05 18:17