контекст безопасности доступен через MuleSession и эта сессия доступна через eventContext. Чтобы получить ссылку на eventContext, можно сделать следующее.
Это может быть достигнуто путем реализации Callable. Создайте следующий класс java. Теперь поместите компонент java в поток мула, где это нужно вызвать и настроить с помощью созданного класса java. Mule автоматически вызывает метод onCall, который имеет eventContext в качестве параметра, и никакой дополнительной конфигурации не требуется для вызова.
Пример java-компонента получает содержимое безопасности из сеанса и из него получает принципал безопасности и сохраняет его в переменной потока «пользователь», которая может использоваться другими элементами потока, которые появляются после этого компонента java в потоке.
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
import org.mule.api.security.Authentication;
import org.springframework.security.core.userdetails.UserDetails;
public class GetSecurityPrincipalCallable implements Callable {
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
Authentication auth = eventContext.getSession().getSecurityContext()
.getAuthentication();
UserDetails principal = (UserDetails) auth.getPrincipal();
System.out.println("username is : " + principal.getUsername());
eventContext.getMessage().setInvocationProperty("user", principal);
return null;
}
}
Я искал это часами! Это сделал трюк. Спасибо огромное! :-) –