В моїй освіті мені сказали, що це недосконала ідея викрити користувачеві фактичні первинні ключі (не тільки ключі DB, але й усі первинні аксесуари).
Я завжди вважав це проблемою безпеки (тому що зловмисник може намагатися читати речі не свої).
Тепер я маю перевірити, чи має право користувач все-таки отримати доступ, тож чи є інша причина цього?
Крім того, оскільки моїм користувачам доводиться отримувати доступ до даних, мені потрібно буде мати відкритий ключ для зовнішнього світу десь посередині. Тепер цей відкритий ключ має ті самі проблеми, що і первинний ключ, чи не так?
З'явився запит прикладу того, чому це робити все-таки, ось ось один. Майте на увазі, що питання стосується самого принципу не лише, якщо він застосовується в цьому прикладі. Відповіді, що стосуються інших ситуацій, явно вітаються.
Додаток (Web, Mobile), який здійснює діяльність, має декілька інтерфейсів користувача та принаймні один автоматизований API для міжсистемної комунікації (наприклад, бухгалтерія хоче знати, скільки стягувати плату з клієнта на основі зробленого). У додатку є кілька клієнтів, тому розділення їх даних (логічно, що дані зберігаються в одній БД) є обов'язковою системою. Кожен запит перевірятиметься на дійсність незалежно від того.
Діяльність дуже тонка, зерниста, тому вона знаходиться разом у якомусь контейнерному об'єкті, і називаємо це "Завдання".
Три випадки використання:
- Користувач A хоче надіслати Користувача B на якесь завдання, щоб він надсилав йому посилання (HTTP), щоб виконати там деяку діяльність.
- Користувач B повинен вийти за межі будівлі, щоб він відкрив Завдання на своєму мобільному пристрої.
- Бухгалтерський облік хоче стягувати плату з клієнта за завдання, але використовує систему обліку третьої сторони, яка автоматично завантажує завдання / діяльність деяким кодом, який посилається на REST - API програми
Кожен із випадків використання вимагає (або стає простішим, якщо) агента мати якийсь адресаційний ідентифікатор для завдання та діяльності.
ON UPDATE CASCADE
був зроблений для цього (специфічно для mysql?), хоча якщо проблема полягає в безпеці, то перевірка доступу повинна бути в бекенде, а не довіряти користувачеві в будь-якому випадку