【发布时间】:2015-06-25 10:09:07
【问题描述】:
我尝试使用 spring security 来保护我的 osgi 服务和 web 应用程序,intercept-url 工作正常,但全局方法 security 根本不起作用。对于纯 OSGI 包,代理模式不起作用,因为 spring-beans 无法访问 SpringProxy。我尝试了代理模式和aspectj模式,并在aspectj模式下启用了加载时间编织,包被成功加载。但是Preauthorized不起作用(在xml配置中添加了pre-post-annotations="enabled"),并且在接口和实现上都添加了注释,但它仍然不起作用。
我不知道spring security保护bean方法的机制。有没有人可以给我一些提示?谢谢!
【问题讨论】:
-
我调试了代码,似乎问题是因为每个包都有自己的类负载,并且 PrePostAnnotationSecurityMetadataSource 从它自己的包中检查 Pre post 注释,所以它找不到我的业务类。似乎可能的解决方案是在我自己的包中定义一个自定义 SecurityMetadataSource 。我使用相同的技术来解决类似的问题。
标签: methods spring-security osgi bundle protected