FirebaseUi-Auth强制登录

时间:2018-05-26 16:01:17

标签: javascript html web firebase-authentication firebaseui

我正在尝试为我的网站实施强制登录。我遇到的问题是我无法找到办法。让我们说我创建了一个像...这样的SignIn页面。

  var uiConfig = {
    signInSuccessUrl: '<url-to-redirect-to-on-success>',
    signInOptions: [

      firebase.auth.GoogleAuthProvider.PROVIDER_ID,
      firebase.auth.FacebookAuthProvider.PROVIDER_ID,
      firebase.auth.TwitterAuthProvider.PROVIDER_ID,
      firebase.auth.GithubAuthProvider.PROVIDER_ID,
      firebase.auth.EmailAuthProvider.PROVIDER_ID,
      firebase.auth.PhoneAuthProvider.PROVIDER_ID
    ],

    tosUrl: '<your-tos-url>'
  };


  var ui = new firebaseui.auth.AuthUI(firebase.auth());

  ui.start('#firebaseui-auth-container', uiConfig);
</script>

..在一个名为www.example.com/SignIn的页面上

如果我访问www.example.com/Index

我完全可以绕过所有的登录。

我认为这样的事情

 if ( FirebaseUser.getCurrentUser () != null ) {

重定向到登录页面}

怎么样?

由于

1 个答案:

答案 0 :(得分:2)

onAuthStateChanged页面上使用www.example.com/Index侦听器:

firebase.auth().onAuthStateChanged(function(user) {
  if (!user) {
    window.location.assign('www.example.com/SignIn');
  }
  ...
});

但是,这不是实施访问控制的正确方法。您应该通过以下任一机制强制执行登录访问:

  1. Firebase security rules(您只能让经过身份验证的用户访问某些资源)。
  2. 在返回受限资源之前,使用Firebase管理员SDK将ID令牌传递到后端verifying it
  3. 此外,您可以使用会话cookie来执行此操作,具体取决于您的站点体系结构。 Firebase现在也提供了mint longer term session cookies

    的功能