Токен-доступ к ресурсу без идентификации и учетных записей пользователей - PullRequest
0 голосов
/ 22 сентября 2019

Моя проблема: Мое приложение имеет количество страниц / ресурсов, которые должны быть доступны для гостя пользователей, но только после предоставления правильной пары [Код ресурса - уникальный токен] (каждая страница имеетодин код страницы и несколько уникальных «токенов», выданных для каждого пользователя).Токены создаются заранее и хранятся в БД.После доступа к странице пользователь сможет взаимодействовать с множеством других ресурсов, принадлежащих конкретной странице.

Как я это организовал до сих пор: Страница просит пользователя предоставить токен и проверяет его с записями в БД.Если это правильный токен для запрашиваемого ресурса, он записывает cookie, а затем каждый раз, когда пользователь взаимодействует с ресурсом или его содержимым, контроллер будет каждый раз, когда читает cookie и проверяет пару [PageCode-Token] с базой данных, прежде чемпродолжение действия.

Вопрос: Есть ли другой, более элегантный и эффективный подход?Должен ли я использовать сеанс вместо этого?Я чувствую себя немного плохо из-за запросов к БД каждый раз.

1 Ответ

0 голосов
/ 22 сентября 2019

Это зависит от того, сколько пользователей получают доступ к вашему сервису. Если объем слишком велик, рекомендуется создать кэш, в котором хранятся все токены, что позволяет избежать перегрузки базы данных.Однако, если служба не используется широко, в этом нет необходимости, поскольку база данных может обрабатывать много запросов.

Вы можете создать кеш двумя способами, используя готовое программное обеспечение, или создать небольшой кеш в проекте.само по себе.

Если вы решите использовать программное обеспечение, я бы порекомендовал Redis, это кеш-база данных, в которой хранятся значения с таймаутом или без него, то есть через некоторое время токены удаляются.Имейте в виду, что это не мешает вам отправлять запросы в базу данных, но вы всегда будете сначала отправлять запросы в кеш (Redis), и если значение не существует, необходимо выполнить поиск в базе данных.

Но если вы решите создать свой собственный, вам нужно будет делать большинство вещей вручную и всегда знать, сколько ресурсов можно выделить.Может быть более выгодно использовать программное обеспечение, чем заново изобретать камень.

...