Создайте пользователей на стороне сервера через простой вход в firebase

Я экспериментирую с настройками безопасности и аутентификации firebase и заметил учебник Simple Login Web. Я могу создавать пользователей, запустив auth.createUser() через консоль javascript, но хотел знать, могу ли я ограничить создание пользователей на стороне сервера.

Я попытался добавить хост в Authorized Request Origins и попытался удалить localhost и 127.0.0.1 (безуспешно), но все же смог создать пользователей со стороны клиента.

В идеале я бы хотел, чтобы пользователи могли аутентифицироваться только со стороны клиента. Я что-то упускаю? (при условии, что это можно сделать, не прибегая к интеграции с fb, twitter и т. д.)

Спасибо


person Kartik    schedule 27.08.2013    source источник


Ответы (1)


Simple Login предназначен для работы без сервера. Если вы хотите, чтобы клиенты не создавали учетные записи, вам необходимо использовать настраиваемый вход и сверните свой собственный.

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

Например, когда на сервере создается новая учетная запись пользователя, я мог бы создать профиль пользователя следующим образом:

/user/$user_id/...

Я могу разрешить пользователям писать в свой профиль, но не создавать профиль, с помощью этого правила:

".write": "data.exists() && auth.uid === $user_id"

Затем, чтобы контролировать доступ к любому пути на сервере, я могу написать следующее правило:

".read": "root.child('user/'+auth.uid).exists()"

Поскольку только сервер может создать профиль, пользователю фактически запрещено создавать учетную запись.

person Kato    schedule 27.08.2013
comment
Спасибо за подробный ответ. Быстрый вопрос: как можно удалить пользователя или восстановить пароль? - person Kartik; 27.08.2013
comment
К сожалению, восстановить пароли (пока) невозможно. Если вы хотите восстановить пароль, вам придется хранить/получать/писать свой собственный механизм (пока). В приведенной выше модели, чтобы удалить пользователя, вы просто удаляете его запись в Firebase (вы пока не можете удалить его простой логин). - person Kato; 28.08.2013