В моем приложении net framework 4.8 есть маршрут, по которому оно получает данные формы из внешнего интерфейса. Все работает нормально, за исключением случаев, когда требуется обработать большое количество файлов.
Проблема в том, что приложение использует Google Recaptcha V3, и секретный ключ для Google Recaptcha генерируется на внешнем интерфейсе, а затем отправляется на серверную часть в том же режиме. тело запроса, как и все файлы. Когда сеть работает медленно, к тому времени, когда MultipartFormDataStreamProvider будет завершена и у меня будет доступ к токену рекапчи из внешнего интерфейса для выполнения внутренней проверки рекапчи, пройдет уже более двух минут, и срок действия ключа внешнего интерфейса истечет, что приводит к неудачному запросу.
Как мне сначала каким-то образом извлечь значение рекапчи из тела запроса, а затем приступить к обработке файлов только после первой проверки проверки Google Recaptcha и прохождения проверка валидации в серверной части
Сейчас все будет равно нулю, пока не будет завершено ожидание Request.Content.ReadAsMultipartAsync(provider);, но к тому времени он будет завершен, когда появятся большие файлы, срок действия RacpatchaKey истечет.
[HttpPost]
[Route("post/files")]
public async Task Post()
{
var provider = new MultipartFormDataStreamProvider(//somePath);
await Request.Content.ReadAsMultipartAsync(provider);
try
{
MyModel model = BuildMyModel();
/*************************************************/
// When there is slow network and large files, by the
// time it gets here after processing all the files,
// the RecaptchKey will have expired and validation will fail
/*************************************************/
if (!GoogleReCAPTCHA.Validate(model.RecaptchaKey))
{
// return error message
}
// ... process rest of data
}
...
}
private MyModel BuildMyModel()
{
MyModel model = new MyModel();
model.FirstName = HttpContext.Current.Request.Params.Get("FirstName");
model.RecaptchaKey = HttpContext.Current.Request.Params.Get("RecaptchaKey ");
...
return model;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-files-g
Получите одно значение из MultipartFormDataStreamProvider перед обработкой файлов (google recaptcha) ⇐ C#
Место общения программистов C#
1728514827
Anonymous
В моем приложении net framework 4.8 есть маршрут, по которому оно получает данные формы из внешнего интерфейса. Все работает нормально, за исключением случаев, когда требуется обработать большое количество файлов.
Проблема в том, что приложение использует Google Recaptcha V3, и секретный ключ для Google Recaptcha генерируется на внешнем интерфейсе, а затем отправляется на серверную часть в том же режиме. тело запроса, как и все файлы. Когда сеть работает медленно, к тому времени, когда MultipartFormDataStreamProvider будет завершена и у меня будет доступ к токену рекапчи из внешнего интерфейса для выполнения внутренней проверки рекапчи, пройдет уже более двух минут, и срок действия ключа внешнего интерфейса истечет, что приводит к неудачному запросу.
Как мне сначала каким-то образом извлечь значение рекапчи из тела запроса, а затем приступить к обработке файлов только после первой проверки проверки Google Recaptcha и прохождения проверка валидации в серверной части
Сейчас все будет равно нулю, пока не будет завершено ожидание Request.Content.ReadAsMultipartAsync(provider);, но к тому времени он будет завершен, когда появятся большие файлы, срок действия RacpatchaKey истечет.
[HttpPost]
[Route("post/files")]
public async Task Post()
{
var provider = new MultipartFormDataStreamProvider(//somePath);
await Request.Content.ReadAsMultipartAsync(provider);
try
{
MyModel model = BuildMyModel();
/*************************************************/
// When there is slow network and large files, by the
// time it gets here after processing all the files,
// the RecaptchKey will have expired and validation will fail
/*************************************************/
if (!GoogleReCAPTCHA.Validate(model.RecaptchaKey))
{
// return error message
}
// ... process rest of data
}
...
}
private MyModel BuildMyModel()
{
MyModel model = new MyModel();
model.FirstName = HttpContext.Current.Request.Params.Get("FirstName");
model.RecaptchaKey = HttpContext.Current.Request.Params.Get("RecaptchaKey ");
...
return model;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79072283/get-single-value-from-multipartformdatastreamprovider-before-processing-files-g[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия