2017-02-18 2 views
0

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

Профиль (веб-страницы), к которому был направлен пользователь, имеет URL

www.example.com/"user.uid"/index.html

, но этот страница может быть доступна только для пользователей, которые идентифицируются, так что если кто-то получает доступ к URL

www.example.com/"user.uid"/index.html

пользователь должен быть направлен на главную страницу

http://www.example.com

Код на странице входа:

btnLogin.addEventListener('click', e =>{ 
     const email = txtEmail.value; 
     const pass = txtPassword.value; 
     const auth = firebase.auth(); 
     const promise = auth.signInWithEmailAndPassword(email,pass); 
     promise 
     .then(user => window.location.href="http://www.example.com/" + user.uid + "/index.html") 
     .catch(e => console.log(e.message)); 
    }) 

код на клиентской странице:

firebase.auth().onAuthStateChanged(firebaseUser => { 
     if(firebaseUser){ 
      console.log(firebaseUser); 
     }else{ 
      window.location.href = "http://www.example.com"; 
      console.log("offline"); 
        } 
}); 

Проблема, с которой я столкнулся, заключается в том, что при перенаправлении на клиентскую страницу статус пользователя отключается

ответ

0

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

  1. Handle стороны проверки подлинности клиента: Добавить onAuthStateChanged слушателя на этой странице www.example.com/"user.uid"/index.html: Если пользователь не зарегистрирован in и не соответствует uid этой страницы, перенаправляет на страницу входа.

  2. Использование печенья. После входа вы можете отправить токен Firebase ID на бэкэнд и mint cookie сеанса или просто использовать маркер ID в качестве файла cookie сеанса. Перед этим убедитесь, что вы проверяете этот токен. Firebase имеет библиотеки node.js и java, чтобы помочь в этом. Вы также должны быть уверены, что постоянно слушаете изменения авторизации на стороне клиента, так как токен Firebase ID истекает каждый час. В любом случае, используя куки-файлы, в следующий раз, когда пользователь запрашивает ограниченный ресурс, вы проверяете, что файл cookie действителен, и соответствует ожидаемому пользователю, прежде чем вы будете обслуживать этот ресурс, в противном случае 302 на странице входа.