''
<script>
// Initialize the agent at application startup.
// If you're using an ad blocker or Brave/Firefox, this import will not work.
// Please use the NPM package instead: https://t.ly/ORyXk
const fpPromise = import('https://openfpcdn.io/fingerprintjs/v4')
.then(FingerprintJS => FingerprintJS.load())
// Get the visitor identifier when you need it.
fpPromise
.then(fp => fp.get())
.then(result => {
// This is the visitor identifier:
const visitorId = result.visitorId
console.log(visitorId)
})
</script>""
<script>
// Initialize the agent at application startup.
// If you're using an ad blocker or Brave/Firefox, this import will not work.
// Please use the NPM package instead: https://t.ly/ORyXk
const fpPromise = import('https://openfpcdn.io/fingerprintjs/v4')
.then(FingerprintJS => FingerprintJS.load())
// Get the visitor identifier when you need it.
fpPromise
.then(fp => fp.get())
.then(result => {
// This is the visitor identifier:
const visitorId = result.visitorId
console.log(visitorId)
})
</script>""
GitHub
fingerprintjs/docs/api.md at master · fingerprintjs/fingerprintjs
The most advanced free and open-source browser fingerprinting library - fingerprintjs/fingerprintjs
📱 DeviceService (Сервис устройств)
Этот сервис — «служба безопасности» для гаджетов пользователей. Он следит за тем, с каких устройств люди заходят в систему.
Зачем он нам: Чтобы отличать «свои» устройства от «чужих» и вовремя блокировать подозрительные входы.
Главная фишка (Fingerprint): Нам нужно научиться узнавать устройство, даже если пользователь не залогинился. Мы собираем данные (браузер, ОС, IP) и делаем из них уникальный «отпечаток».
Как это работает:
При каждом входе сервис проверяет «отпечаток».
Если устройство новое — шлем уведомление: «В ваш аккаунт зашли с нового iPhone».
Если устройство заблокировано (например, украдено) — сервис просто не дает авторизоваться.
Связи: Тесно работает с сервисом сессий. Если мы блокируем устройство, все активные сессии на нем должны «умереть» мгновенно.
🏢 TenantService (Сервис компаний)
Это фундамент нашей SaaS-платформы. Он отвечает за то, чтобы данные разных компаний (тенантов) никогда не перемешались.
Зачем он нам: Одна копия нашего кода обслуживает сотни разных компаний. Этот сервис — «дирижер», который говорит системе: «Сейчас работает компания А, используй её настройки».
Главная фишка (Resolution): Мы должны мгновенно определять компанию по адресу сайта (например, apple.our-saas.com) или по специальному ключу в мобильном приложении.
Как это работает:
Хранит настройки для каждой компании (логотипы, цвета, правила сложности паролей).
Выдает API-ключи для мобильных и десктопных приложений.
Следит за «активностью» компании: если подписка не оплачена, можно выключить сразу весь доступ.
Скорость: Это самый нагруженный сервис. Он должен отвечать за миллисекунды, поэтому мы активно используем Redis для кеширования.
Этот сервис — «служба безопасности» для гаджетов пользователей. Он следит за тем, с каких устройств люди заходят в систему.
Зачем он нам: Чтобы отличать «свои» устройства от «чужих» и вовремя блокировать подозрительные входы.
Главная фишка (Fingerprint): Нам нужно научиться узнавать устройство, даже если пользователь не залогинился. Мы собираем данные (браузер, ОС, IP) и делаем из них уникальный «отпечаток».
Как это работает:
При каждом входе сервис проверяет «отпечаток».
Если устройство новое — шлем уведомление: «В ваш аккаунт зашли с нового iPhone».
Если устройство заблокировано (например, украдено) — сервис просто не дает авторизоваться.
Связи: Тесно работает с сервисом сессий. Если мы блокируем устройство, все активные сессии на нем должны «умереть» мгновенно.
🏢 TenantService (Сервис компаний)
Это фундамент нашей SaaS-платформы. Он отвечает за то, чтобы данные разных компаний (тенантов) никогда не перемешались.
Зачем он нам: Одна копия нашего кода обслуживает сотни разных компаний. Этот сервис — «дирижер», который говорит системе: «Сейчас работает компания А, используй её настройки».
Главная фишка (Resolution): Мы должны мгновенно определять компанию по адресу сайта (например, apple.our-saas.com) или по специальному ключу в мобильном приложении.
Как это работает:
Хранит настройки для каждой компании (логотипы, цвета, правила сложности паролей).
Выдает API-ключи для мобильных и десктопных приложений.
Следит за «активностью» компании: если подписка не оплачена, можно выключить сразу весь доступ.
Скорость: Это самый нагруженный сервис. Он должен отвечать за миллисекунды, поэтому мы активно используем Redis для кеширования.