测试时弹簧安全禁用

时间:2014-11-07 10:44:44

标签: spring spring-security

我有一个用JSF和Spring编写的应用程序(事务和IoC)。该应用程序使用Spring安全保护(由于我使用ACL,因此非常复杂)。通过app的流程是:
JSF Managed Bean - >服务类 - > DAO类 - > DB和其他方式。

测试方法实现的界面如下所示:

public interface MyService extends GenericService {

    @PreAuthorize("hasPermission(#oId,'com.mycompany.core.entity.MyObject','read')")
    public abstract MyObject getMyObject(Long oId);
}

指定方法的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:/applicationContext.xml","classpath:      /applicationContext-test.xml" })
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback =  true)
@Transactional(propagation = Propagation.REQUIRED)
public class MyServiceImplIntegrationTest {

    @Inject
    private MyService myService;

    @Test
    public void testGetMyObject(){
        myService.getMyObject();
    }
}

可以看出我使用两个xml文件来配置spring(一个用于测试,一个用于非测试) 我的问题是,对于整个测试类,我想要消除真实方法中的弹簧安全注释 我的第一个是覆盖现在看起来像这样的元素:

<security:global-method-security pre-post-annotations="enabled">
    <security:expression-handler ref="methodExpressionHandler" />
</security:global-method-security>

<security:global-method-security pre-post-annotations="disabled">
    <security:expression-handler ref="methodExpressionHandler" />
</security:global-method-security>

但似乎无法在其他文件中覆盖此元素 关于如何达到同样效果的任何其他想法?

PS。组件版本是:

<org.springframework.version>4.0.7.RELEASE</org.springframework.version>

<org.springframework.security.version>3.2.4.RELEASE</org.springframework.security.version>

0 个答案:

没有答案