2012-12-12 3 views
7

У меня есть уникальный поток пользовательского создания которой заключается в следующем:Создание пользователя без пароля в Метеоре

  1. Пользователь заходит на мой сайт в первый раз, и они нажимают на кнопку.
  2. Я создаю для них пользователя в БД и задаю ключ localStorage с UID.
  3. Использование идет о создании данных, и я сохраняю данные в БД и свяжу их с UID.
  4. Пользователь возвращается, и если у них установлен UID в localStorage, я покажу им данные, которые они ранее создали.
  5. Пользователь может нажать «Зарегистрироваться», чтобы создать «реальную» учетную запись, с которой они должны будут войти с именем пользователя и паролем или другим сервисом (например, Facebook).

Итак, как бы это сделать с помощью учетных записей Meteor и модели пользователя?

В двух словах:

  • Мне нужно создать документ Монго пользователя без информации (о пользователе).
  • Мне нужно аутентифицировать пользователя, просто имея UID (действуя как «пароль»).

ответ

1

Я не знаю, как помочь с аутентификацией, но также для создания пустого объекта пользователя, я успешно сделал следующее на стороне сервера (с другим именем ...):

Meteor.users.insert({profile: {name: 'Oompa Loompa'}, foo: 'bar'});

8
  1. Регистре onCreateUser добавить "анонимный" поле ({anonymous:1}) , когда используется случайный пароль, может быть создан с Meteor.uuid().
  2. Добавить поле метки времени ({created:new Date()}), чтобы очистить старые анонимные аккаунты.
  3. Выполните старый анонимный абонентское обслуживание, например, удаление анонимных пользователей, более , чем один час старый: Meteor.autorun(function() {Meteor.users.find({anonymous:1,$where:"new Date() - this.created > 360000"}).forEach(function (user) {
    Meteor.users.remove({_id:user._id})}});
  4. На клиенте:
    1. Всегда быстрой для «прозвище.» Это станет официальным именем пользователя, или будет сидеть в системе навсегда.
    2. Проверьте клиент вошел в систему. Если нет, создать пользователя с ником и «магическое число» пароль, который регистрирует вас. Когда они щелкают зарегистрироваться, написать «Регистрация» на сверху, но на самом деле просто изменить свой пароль и $set:{anonymous:0}

не используйте LocalStorage, и не использовать UIDs. Файл cookie сеанса - это ваш UID.

+0

Почему я не должен использовать localStorage? – Gezim

+0

Вы должны использовать localStorage, чтобы не хранить что-то вроде UID. 'meteor-accounts' уже заботится о аспекте cookie/token /" UID "того, чего вы пытаетесь достичь. Но, не позволяйте мне препятствовать вам писать свой собственный пакет, который делает именно то, что вы хотите. Рассмотрите возможность проверки кода «meteor-accounts» и подумайте о том, как реализовать анонимного пользователя. Я бы разрешил пользователям создавать имена без имени пользователя, и я бы добавил анонимное поле с функциональностью, описанной выше. В нем рассматривается основное ограничение моего решения: вы должны начать с прозвища. – DoctorPangloss

+0

Можете ли вы уточнить, что вы подразумеваете под «магическим числом» в этом контексте? Вы говорите, что нужно выбрать случайное число для регистрации анонимного? Или это «магическое число» программно сгенерировано? – Chanpory

Смежные вопросы