vani sharma Ответов: 1

Как передать заголовок авторизации на сервер отправленные события из angular JS


Мне нужно передать заголовок авторизации на сервер, отправленный событиями из Angular JS. Поскольку в настоящее время я не получаю никаких сведений о заголовке, spring SecurityContextHolder.getContext().getAuthentication() всегда равен null и дает nullPointerException. Пожалуйста, предоставьте решение, чтобы я мог получить пользовательский контекст в слое java.

Что я уже пробовал:

Мне нужно передать заголовок авторизации на сервер, отправленный событиями из Angular JS. Поскольку в настоящее время я не получаю никаких сведений о заголовке, spring SecurityContextHolder.getContext().getAuthentication() всегда равен null и дает nullPointerException. Пожалуйста, предоставьте решение, чтобы я мог получить пользовательский контекст в слое java.

1 Ответов

Рейтинг:
0

David_Wimbley

Поскольку вы не опубликовали ни одного своего углового кода, я сделаю некоторые предположения (например, используя базовый вызов auth + get).

За $протоколу HTTP.вам есть свойство заголовки, которые вы должны быть в состоянии использовать.

$http.get('< your url here >' {
    headers: {'Authorization': 'Basic < your auth string here >'}
});


Если это не соответствует вашим потребностям, я призываю вас использовать google, чтобы найти что-то. Аутентификация и запросы, выполняемые через angular, хорошо документированы.

Авт примеру

Google-угловой заголовок auth


vani sharma

Пожалуйста, найдите ниже угловой код:-
var es = новый источник событий('http://localhost:9080/stream', {withCredentials: true});
es. onmessage = функция (событие) {
дайте ответ=событие.сведения;
response=JSON. parse(ответ);

что.время ожидания(функция() {это.резюме.данных.summaryInformation = ответ.summaryInformation;});
консоли.журнал(событие.сведения);
};


Сервер отправил код событий:-

@Контроллер
публичный класс SSEController {

частная статические заключительные войти регистратор = регистратор.getLogger(SSEController.class);
частная окончательной AlertViewService alertViewService;

@Autowired
public SSEController(AlertViewService alertViewService) {
this.alertViewService = alertViewService;
}


@RequestMapping (path = "/ stream", method = RequestMethod.ПОЛУЧИТЬ)
общественные SseEmitter трансляция(@AuthenticationPrincipal пользователей приложения UserService) бросает IOException {
SummaryView SummaryView = alertViewService.summaryInformation();
Sseemitter emitter = новый SseEmitter();
Scheduledexecutorservice выполняет pingThread = исполнителей.newScheduledThreadPool(1);
излучатель.onCompletion(() -&ГТ; {
log.info ("полный");
пинг-тред.выключение();
});
излучатель.onTimeout(() -&ГТ; {
log.info ("тайм-аут");
});
пинг-тред.scheduleAtFixedRate (() - > {
пробовать {
излучатель.отправить(summaryView, тип носителя.APPLICATION_JSON);
} catch (исключение e) {
log. error ("невозможно излучать", e);
}
}, 100000, 100000, TimeUnit.МИЛЛИСЕКУНДЫ);
обратный излучатель;



}
}