Я застрял с проблемой, которая простыми словами заключается в поиске способа безопасной визуализации и обслуживания HTML файлов (вместе с CSS, JS) с локального диска на сервере для веб-приложение, запущенное в клиентском браузере.
ПРИЛОЖЕНИЯ
- Интерфейсное веб-приложение создается с использованием React JS (response-admin to точнее).
- Внутренняя часть, обрабатывающая запросы API Rest, настраивается с использованием Net core 3.1
- Оба приложения размещаются в IIS на сервере Windows (как служба приложений внутри веб-сайт по умолчанию в IIS).
ОГРАНИЧЕНИЯ
- Размещение приложений должно осуществляться только внутри IIS на сервере windows. (Другие варианты также приветствуются)
- Back / Front end может быть на любом языке, как мы желаем. (желательно точка net ядро, поскольку я использую c# в течение последних 10 лет)
ТЕХНИЧЕСКИЕ ДАННЫЕ
Я работаю над разработкой решение для просмотра облаков точек (Potree, проект с открытым исходным кодом, разработанный с использованием трех- js). Это самостоятельный процесс. Конвертер C ++ для настольных ПК предоставляет Potree, который преобразует входные данные в веб-страницу (с html, css, js) ( ДАВАЕТ ВЫЗВАТЬ ЭТО ФАЙЛЫ-ЦЕЛИ ) Мы можем разместить эту веб-страницу на любом сервере для просмотра сторонними организациями.
ТЕКУЩИЙ СТАТУС
Работает: Целевые файлы размещаются на сервере IIS как приложение, и к ним можно получить доступ без проблем. (изображение можно увидеть ниже).
Работает: Веб-приложение реагирует js, файлы dist размещаются на сервере IIS, и к нему также можно обращаться без проблем.
Выше двух шагов подтверждают, что оба встроенных приложения работают хорошо, так как они могут быть размещены по отдельности, а также доступны с других компьютеров.
![enter image description here](https://i.stack.imgur.com/4JO64.png)
ХАРАКТЕРИСТИКА, С КОТОРОЙ Я УСТУПАЮ
- Целевые файлы предназначены для разных пользователей. Таким образом, это должно быть выполнено после проверки через запрос API.
- Текущая настройка такова, что когда пользователь щелкает ссылку в приложении реагирования, он выполняет вызов REST Api, который обрабатывается серверной частью do * Базовое приложение 1126 * (могут быть и другие более эффективные способы передачи файлов html во внешнее веб-приложение).
Я пробовал несколько способов обработать файл HTML. Вариант 1: использовать StaticFiles (при запуске). Я пытаюсь прочитать файл html из локального файла и затем отобразить его внутри файла noidea.cs html, используя @Html.Raw(Model.SomePropertyName)
// GET: /<controller>/
public IActionResult noidea()
{
try
{
var newmodel = new noideaModel();
var file = System.IO.File.ReadAllLines("./acl-i/acl-i.html");
newmodel._html = string.Join("", file);
return View(newmodel);
//return View();
}
catch (Exception)
{
throw;
}
}
}
Этот параметр работает частично нормально, но проблема в том, что, поскольку я поместил файлы в папку stati c (настроенную при запуске), пользователи могут легко изменить URL-адрес и получить доступ к другим файлам, присутствующим там.
![enter image description here](https://i.stack.imgur.com/767Kf.png)
Итак, я попытался сделать с опцией 2, которая заключается в том, чтобы просто прочитать содержимое файла html с локального диска и использовать его как результат содержимого .:
[AllowAnonymous]
[HttpGet, Route("viewer")]
public IActionResult getViewer()
{
//For serving single static html file.
var file = System.IO.File.ReadAllLines("./acl-i/acl-i.html");
var item = string.Join("", file);
return new ContentResult
{
ContentType = "text/html",
StatusCode = (int)StatusCodes.Status200OK,
Content = item
};
}
Точка успеха здесь заключается в том, что я могу правильно пройти аутентификацию, и пользователи не могут изменить URL-адрес, поскольку конечная точка API обслуживает файл. Проблема в том, что я просто обслуживаю только HTMl, а связанные css, js не распознаются браузером клиента. Ниже изображение показывает проблему. js и CSS также ищутся в одной конечной точке API.
![enter image description here](https://i.stack.imgur.com/ukeGt.png)
ВОПРОС:
Я новичок в реагировании js и на разработку веб-интерфейса. В основном я работаю с Xamarin, C # / WPF / XML для настольных приложений и разрабатываю конечные точки Web API для приложений CRUD. Итак, я полностью застрял здесь. Не знаю, как решить проблему.
- Я ищу решение текущей проблемы.
- Или найти элегантный простой способ чтобы решить проблему (я также видел пример express js с реакцией js, но это было неясно, и я тоже новичок в этом).
Мне просто нужно найти способ аутентификации пользователя, а затем предоставить ему полностью визуализированную html страницу для просмотра в его браузере ( это так легко объяснить таким образом ) Любая помощь или направление / предложение приветствуется.