Вход в систему без пароля позволяет пользователю доказать, что у него есть доступ к определенному почтовому ящику.По сути, он не делает ничего, кроме этого.Когда пользователь нажимает на ссылку, он аутентифицируется .Помимо включения / отключения всего провайдера входа в систему, вы не можете контролировать, кто может выполнять вход / аутентификацию.
После этого ваше приложение должно определить, что этому пользователю разрешено делать.Это отдельный шаг, обычно называемый авторизация .
Firebase Authentication (как следует из названия) заботится только об аутентификации.Вам придется обрабатывать авторизацию в других местах, в зависимости от того, к каким сервисам вы предоставляете доступ пользователям.
Что делает электронную почту "зарегистрированной" в вашем приложении?Т.е. где админ создает этих пользователей?Например, если вы храните пользователей в Cloud Firestore в коллекции allowed_users
, с такими документами:
allowed_users: // collection
"arkade@domain,com": { ... } // document
"puf@domain,com": { ... } // document
Теперь вы можете ограничить доступ только к другим разрешенным пользователям.данные с правилами безопасности на стороне сервера Firestore.Допустим, у вас есть коллекция posts
, вы можете разрешить только этим пользователям читать сообщения с:
service cloud.firestore {
match /databases/{database}/documents {
match /posts/{post} {
// Make sure a 'allowed_users' document exists for the requesting user before
// allowing any reads from the 'posts' collection
allow read: if exists(/databases/$(database)/documents/allowed_users/$(request.auth.email))
}
}
Синтаксис немного длинный, но вы можете видеть, что он разрешает только чтение сообщенияесли адрес электронной почты текущего пользователя (request.auth.email
) существует как документ в allowed_users
.