使用Spring安全性时,我想为每个正在运行的配置文件定义不同的可接受角色。我遇到的问题是保护切入点定义似乎不接受上下文占位符(如果使用access =“$ {secured.role}则不会翻译。)如果我将安全元素放在每个bean配置文件中,STS给出一个警告说存在多个全局安全方法元素。我理解为什么会这样,好像我运行了两个加载它的配置文件,两者都会加载。虽然如果我只运行一个配置文件(这是我的意图)只有正确的人会加载。
以下是我的定义:
<beans profile="security-ad">
<security:global-method-security>
<security:protect-pointcut access="ROLE_THAT_ROLE" expression="execution(* com.test.service.TestServiceImpl.testSecuredMethod(..))"/>
</security:global-method-security>
</beans>
<beans profile="security-tam">
<security:global-method-security>
<security:protect-pointcut access="ROLE_THIS_ROLE" expression="execution(* com.test.service.TestServiceImpl.testSecuredMethod(..))"/>
</security:global-method-security>
</beans>
<beans profile="security-embedded">
<security:global-method-security>
<security:protect-pointcut access="ROLE_ADMIN" expression="execution(* com.test.service.TestServiceImpl.testSecuredMethod(..))"/>
</security:global-method-security>
</beans>
有没有办法在安全定义中实现基于配置文件的角色,同时仍然让STS满意?这个DOES运行,它只是在项目中出错,这是我不能接受的......