3

@PreAuthorize我有一个使用注释保护的 Spring Service 层。到目前为止,这已通过 Web 应用程序使用。现在我需要启用我们的 SpringBatch 作业以使用这些服务。

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

4

1 回答 1

6

我有同样的问题,这是我为解决它所做的:

在我的 tasklet 中,我调用了这个方法:

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

这是在我的小任务中注入的 SecurityUtility 类中编写的 authenticateAs 方法的定义,实现了 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;
}

效果很好,如果您需要更多详细信息,请告诉我;)

于 2013-01-22T17:15:21.253 回答