gpt4 book ai didi

spring-mvc - 类上的@Secured 注释不适用于父类方法

转载 作者:行者123 更新时间:2023-12-02 03:53:48 25 4
gpt4 key购买 nike

我有一个抽象类(父类)与一些共享 @RequestMapping方法,还有一些 @Controller实现它的类(子类)。

我用 @Secured 注释了子类在类级别,但父类方法不受此保护。 (即 AOP 拦截器只考虑子类上的方法,而不考虑父类上的方法)。

不幸的是,每个子类都需要由不同的角色保护,所以不可能用一个公共(public)的@Secured来注释父类。限制。可以覆盖父类中的所有方法以保护它们,但我想避免这种丑陋的解决方法。

因此我想知道是否有任何我可以覆盖的东西(例如拦截器、通知或元数据提供程序,以便类层次结构中的任何方法都将观察目标类上的 @Secured 注释)?

附加信息:

似乎注释解析是在 org.springframework.security.access.method.AbstractFallbackMethodSecurityMetadataSource .getAttributes(Method, Class<?>)实际上它只查看了方法的声明类(在我的例子中是父类)。但是,我不太熟悉代理编程,所以欢迎任何有关如何安全地实现我想要的更改的建议。

最佳答案

看起来你可以简单地用类似的东西覆盖 SecuredAnnotationSecurityMetadataSource

@Override
public Collection<ConfigAttribute> getAttributes(Method method, Class<?> targetClass) {
Collection<ConfigAttribute> out = super.getAttributes(method, targetClass);

if (out == null || out.isEmpty()) {
out = findAttributes(targetClass);
if (out == null) out = Collections.emptyList();
}

return out;
}

关于spring-mvc - 类上的@Secured 注释不适用于父类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com