2012-10-11 263 views
3

我有一个弹簧服务层与@PreAuthorize注释安全。到目前为止,这已通过Web应用程序使用。现在我需要启用我们的SpringBatch作业来使用这些服务。使用弹簧安全与弹簧批

在调用这些服务方法之前,允许作业授权他们的最直接的方法是什么?

回答

5

我有同样的问题,这里是我做过什么来解决这个问题:

在我的微进程,我称这种方法:

securityUtility.authenticateAs("login", "password"); 

这是写在我的authenticateAs方法的定义我SecurityUtility类在我的微进程注入,实现了ApplicationContextAware:

/** 
* Authenticate a user 
* @param username 
* @param password 
* @return 
*/ 
public Authentication authenticateAs(String username, String password) { 
    ProviderManager providerManager = (ProviderManager)applicationContext.getBean("authenticationManager"); 
    Authentication authentication = providerManager.authenticate(new UsernamePasswordAuthenticationToken(username, password)); 
    setAuthentication(authentication); 
    return authentication; 
} 

它运作良好,让我知道,如果你需要更多的细节;)

+0

是的,这与我最终解决我的问题的方式非常相似,只是一个简单的自定义任务进行身份验证。唯一令人讨厌的是Spring Security似乎对Spring web有一些依赖性,所以我必须将Spring Web组件包含到我的构建中以避免有关缺少过滤器的警告。 – vertti