3

@PreAuthorizeアノテーションで保護されたSpringServiceレイヤーがあります。これまでのところ、これはWebアプリケーションを介して使用されています。次に、SpringBatchジョブでこれらのサービスを使用できるようにする必要があります。

これらのサービスメソッドを呼び出す前に、ジョブがジョブを承認できるようにする最も簡単な方法は何ですか?

4

1 に答える 1

6

私は同じ問題を抱えていました、これが私がそれを解決するためにしたことです:

私のタスクレットでは、このメソッドを呼び出しました:

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 に答える