Я использую CK Editor для текстовых полей Rick - пользователь загружает изображение в мой продукт ECM (оно встроено в другой раздел моего приложения, и пользователь автоматически проходит аутентификацию с помощью OAuth2 и получает токен, который я храню в cook ie для этого сеанса. Затем они могут взять ссылку на это изображение и встроить ее, используя опцию панели инструментов изображения CK Editor. Это работает нормально, и изображение отображается должным образом.
Однако проблема в том, закрывают ли они браузер и вернитесь на следующий день - они повторно аутентифицируются в ECM и будет выдан новый токен доступа - это приведет к 401, если они попытаются просмотреть текстовое поле Рика, в которое вставлено изображение.
Я поставил следующий код, в котором почти работает:
CKEDITOR.replace(this.id, {
on: {
instanceCreated: function () {
alert('instanceCreated');
},
instanceLoaded: function () {
alert('instanceLoaded');
},
instanceReady: function () {
alert('instanceReady');
var editor = this.document.$;
var noOfImages = editor.images.length;
if (noOfImages > 0) {
debugger;
for (var i = 0; i < noOfImages; i++) {
var imageSrc = editor.images[i].src;
var imageId = getImageId(imageSrc, 'Id');
var currentToken = getCurrentToken();
var newUrl = getUpdatedImageUrl(currentToken, imageId);
editor.images[i].src = newUrl;
}
}
//further code removed for brevity
Теперь изображение отображается, как и ожидалось - однако я получаю всплывающее окно Auth, которое автоматически исчезает, когда я устанавливаю img sr c с помощью обновленный URL - я вижу в инструментах разработчика сети - запрос инициируется на старый URL с истекшим токен доступа - но затем он «отменяется»
Так что единственное, что мне нужно попытаться выяснить, - это как предотвратить появление диалогового окна до того, как я исправлю img sr c - вы увидите В приведенном выше коде я попытался подключиться к функциям instanceCreated и instanceLoaded в надежде, что они сработают до instanceReady, но когда я запускаю код, единственное предупреждение, которое вызывается - instanceReady.