0

Я новичок в Firebase, я пытаюсь создать аутентификацию пользователя. Пользовательский объект имеет: имя пользователя, адрес электронной почты, полное имя, роль, пароль.Аутентификация на основе ролей с Firebase

Теперь я хочу, чтобы иметь возможность создавать пользователя с этими свойствами и аутентифицироваться, используя либо имя пользователя/адрес электронной почты и пароль.

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

Я понятия не имею, как это сделать, и документы в основном имеют дело только с электронной почтой и паролем.

+0

Firebase только что запустил поддержку на основе ролей доступа через претензии пользовательских пользователей на ID маркеров: https://firebase.google.com/docs/auth/admin/custom-claims – bojeil

ответ

1

Firebase поддерживает только аутентификацию по электронной почте + пароль в настоящий момент, а не имя пользователя и пароль. (И, конечно, Facebook, Twitter, анонимный и т. Д.). Тем не менее, вы все равно можете использовать собственную аутентификацию.

Вы по-прежнему можете создавать свои собственные пользовательские объекты в базе данных с теми полями, которые вы упомянули: (имя пользователя, адрес электронной почты, полное имя, роль, пароль), но они отделены от части аутентификации firebase. Этот процесс я бы назвал «регистрацией», и это зависит от вас.

Если вы хотите контролировать, какие части базы данных могут иметь разные пользователи, то вы говорите о database rules.

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

1

Вы можете структурировать свою базу данных таким образом, чтобы сохранить информацию каждого пользователя, используя их $uid и сохранить список имен пользователей, заявленных каждым пользователем, чтобы вы могли иметь правило записи, которое предотвращает переписывание уже существующего имени пользователя в usernames.

Итак, при регистрации вам необходимо зарегистрироваться с помощью электронной почты и пароля с помощью FIRAuth, после чего вам будет предоставлен FIRUser. Затем вы можете использовать uid, чтобы записать имя пользователя, роль и т. Д. В местоположение пользователя в базе данных "users/$uid": {"username": "callam", ...}, а также имя пользователя отдельно в поле usernames "usernames/$username": "$uid".

Вам необходимо будет реализовать правила записи/проверки для "users/$uid" и "usernames/$username", чтобы убедиться, что имя пользователя еще не принято.

{ 
    "users": { 
     $uid: { 
      "username": "callam", 
      ... 
      "role": "member" 
     } 
    }, 
    "usernames": { 
     "callam": $uid 
    } 
}