1

Тема: Анонімні користувачі та токени

Вітаю.

Я намагаюсь створити деякий сервіс, котрий підтримував би анонімних користувачів.
Наприклад, користувач відкриває додаток, та автоматично стає анонімним користувачем. Йому буде доступна якась частина функціоналу, але щоб отримати повний доступ, користувач повинен зареєструватись.

Під час реєстрації анонімний користувач в базі даних просто змінюється на зареєстрованого, через додавання паролю та логіну до вже наявного запису, але як організувати то всьо?

В мене все погано з криптографією та подібними речами, але ось, що я собі думаю...

Коли користувач заходить в додаток вперше, то на сервері створюється запис під цього користувача, котрий міститиме поле з якимось унікальним рядком тексту. Потім цей текст відправляється користувачу, та зберігається на девайсі локально. І тепер, якщо користувач захоче користуватись функціоналом сервісу, то разом зі своїм запитом буде відправляти ось той унікальний рядок.

Коли ж користувач захоче зареєструватися, то цей унікальний рядок буде видалятися, але замість нього буде зберігатись реєстраційна інформація про користувача, ну і тут вже все просто, тому що є купа туторіалів.

Якщо такий підхід спрацює, то чи достатньо буде використовувати якийсь uuid для генерації отого унікального рядка?

2

Re: Анонімні користувачі та токени

Це ви намагаєтеся самі придумати сесії HTTP?

Подякували: FakiNyan, ostap34PHP, leofun013

3

Re: Анонімні користувачі та токени

Почитав про то, але воно не зовсім підходе, тому що сесії встановлюються заголовком Set-Cookie, а я то планую робити в мобільному додатку, а не бравзері.
До того ж, сесії зберігаються на деякий час, котрий встановлюється при створені сесії, а мені треба на невизначений час, допоки користувач не захоче зареєструватись за допомогою інших сервісів, або власної пошти з паролем.

4

Re: Анонімні користувачі та токени

А яка різниця? Просто обробляйте заголовки. Сервер же все одно буде HTTP?

Подякували: leofun011

5

Re: Анонімні користувачі та токени

koala написав:

А яка різниця? Просто обробляйте заголовки. Сервер же все одно буде HTTP?

угу

6

Re: Анонімні користувачі та токени

А яка принципова різниця між токенами та сесіями? Ось в мене на робочому проєкті приходе токен з серверу, і я його зберігаю в куки під ім'ям session_token, і далі я постійно додаю цього токена до всіх запитів до бекенду.
Чому це не було зроблено через сесії, а зроблено через токен?

Подякували: leofun011

7

Re: Анонімні користувачі та токени

Сесія - це щось більше за токен.
Але так, сесія потребує токен.

Подякували: FakiNyan, leofun012

8

Re: Анонімні користувачі та токени

Ще одне питання перед тим, як я почну писати код...
Я так зрозумів, що все, що нам треба - це деяке унікальне значення, котре б казало, що ось цей запит, що містить в заголовках те унікальне значення є авторизованим, тобто, все окей, і цей запит можна обробляти.
Тобто, теоретично я можу використовувати навіть uuid - бо це буде унікальним значенням, і коли новий користувач робитиме свій перший запит до серверу - я б генерував те унікальне значення, зберігав би його разом з даними користувача, і відправляв би те значення користувачу, а коли користувач робитиме наступний запит, то він додасть до цього запиту оте унікальне значення, і таким чином я буду знати, що це за користувач, і що він дійсно є користувачем, а не кимось іншим.
Все так?

Подякували: leofun011

9 Востаннє редагувалося leofun01 (08.08.2020 16:55:55)

Re: Анонімні користувачі та токени

Так.

Але якщо користувач зареєстрований і ввійшов в свій обліковий запис, то треба врахувати, що він може ввійти з різних пристроїв і це будуть окремі сесії для різних пристроїв для одного користувача.
Тому в базі даних токени сесії треба тримати окремо від зареєстрованих користувачів.

Подякували: FakiNyan1

10

Re: Анонімні користувачі та токени

Саме так.

Подякували: FakiNyan1