Конечно, всегда есть компромисс между безопасностью и производительностью. Я бы не рекомендовал кэшировать данные проверки, но, возможно, для какого-то облегченного поиска вы могли бы рассмотреть это, но я настоятельно рекомендую не использовать такую практику при публикации данных, обновлении или удалении.
ользую гуглreCAPTCHA v3 вУгловой 2 приложение для защиты от автоматической подачи формы. Мое приложение выполняет много сетевых вызовов в фоновом режиме, когда пользователи взаимодействуют с пользовательским интерфейсом.
Изindex.html
Я намеренно делаюблокирование вызов для загрузки библиотеки (предотвращение входа в мир угловыхrecaptcha/api.js
загружен):
<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>
От конструктора угловогообслуживание Я используюДОКУМЕНТ DI токен ссылаться наgrecaptcha
объект:
constructor(@Inject(DOCUMENT) private document: any) {
this.grecaptcha = this.document.grecaptcha;
}
После загрузки приложения (используякрючки жизненного цикла), вышеупомянутые угловые сервисные звонкиgrecaptcha.execute
получить уникальныйtoken
(в соответствии сИнтеграция внешнего интерфейса руководство):
public executeCaptcha() {
this.grecaptcha.ready(() => {
this.grecaptcha
.execute(MyService.CAPTCHA_KEY, {
action: 'execute'
})
.then((token: string) => this.token = token);
});
}
token
является параметром обратного вызова и хранится как член службы Angular (this.token = token)
).
На данный момент приложение не совершало никаких вызовов API для моегобэкенди пользователь не был проверен как человек.
token
должен быть отправлен на мой сервер, который, в свою очередь, долженпроверить ответ пользователя сделавЗапрос API.
Ответ API затем можно вернуть в браузер (приложение Angular):
{
"success": true|false,
"challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
"hostname": string, // the hostname of the site where the reCAPTCHA was solved
"error-codes": [...] // optional
}
Вопросов
Еслиtoken
отправляться с каждым HTTP-запросом из моего приложения Angular и проверяться каждый раз?... или пользователь может быть проверен один раз (в начале) и егоГол вспомнили в приложении Angular?Я читаюгде-то что Google использует движения мыши и различные сигналы на стороне клиента для вычисления оценки.... означает ли это, что я должен (повторно) проверять периодически, чтобы получить улучшенную оценку?