2015-11-26 3 views
1

Пробовал аутентификацию и авторизацию в муле и получил ее работу. Теперь я хочу, чтобы ссылка на контекст безопасности мула была конкретно ссылкой на объект , который будет использоваться в потоке. Как получить ссылку на основной объект в муле внутри потока?Как получить контекст безопасности мула или основную ссылку на безопасность в потоке мула

ссылка mule xml

ответ

2

контекст безопасности доступен через 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; 
    } 

} 
+0

Я искал это часами! Это сделал трюк. Спасибо огромное! :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^