Я пытаюсь создать RESTful API для игры.
Игра будет поддерживать как анонимных пользователей (пользователей, которые просто хотят играть сейчас), так и пользователей, которые хотят зарегистрироваться.
Я пытаюсь добиться того, чтобы незарегистрированный пользователь все еще использовал тот же компьютер, и связанные с ним данные будут сохранены. У меня проблемы с сеткой, а также с надлежащей поддержкой пользователей для тех, кто хочет зарегистрироваться.
GET users/create Users.create
создаст нового «анонимного» пользователя, который вернет обратно пользователя (и уникальный токен, по которому его можно будет определить)
POST users/register Users.register
примет необязательный токен (если пользователь ранее был анонимным), адрес электронной почты и пароль. Он создаст нового зарегистрированного пользователя (с тем же токеном, если он был предоставлен - или новым).
POST auth/login Auth.login
примет адрес электронной почты и пароль, вернув пользователя в случае успеха
POST auth/authenticate
будет принимать уникальный токен, возвращая 200/500 в зависимости от того, существует ли токен в базе данных.
По сути, для каждого звонка на сервер требуется один из этих уникальных токенов. Я буду в состоянии использовать это, чтобы отследить, с каким пользователем это связано.
Моя настоящая путаница возникает при попытке реализовать какую-то функцию «запомнить меня» для зарегистрированных пользователей. Если зарегистрированный пользователь имеет один из этих уникальных токенов, могу ли я использовать его как токен запомнить меня? Похоже, что это плохой выбор с точки зрения безопасности, и это может привести к большому количеству auth/authenticate
сбоев. Поскольку новые токены необходимо создавать каждый раз, когда пользователь входит в систему на новом компьютере.
Я что-то упустил полностью? Похоже, что весь этот процесс имеет катастрофу безопасности. Есть ли хороший рецепт для такого поведения?
Приветствия
Ian