代码之家  ›  专栏  ›  技术社区  ›  aMJay

重定向页面加载前未登录的用户

  •  3
  • aMJay  · 技术社区  · 8 年前

    我对我用googles firebase创建的网站的安全性有疑问。目前,这是一个非常简单的网站,带有注册/登录表单,可以登录。用户登录时,会重定向到另一个页面:

      firebase.auth().onAuthStateChanged(firebaseUser => {
        if(firebaseUser){
          window.location = 'home.html';
        } else {
          console.log('not logged in');
        }
      });
    

    现在,正如任何人都可以看到js文件一样,您可以知道用户将被重定向到哪里,甚至不需要帐户,因此有人可以使用 /home.html 最后绕过登录表单。所以在 home.html 我添加了一个脚本,可以将未登录的用户重定向回主页:

    if(!firebaseUser){
      window.location = 'index.html';
    } 
    

    目前效果不错,用户可以访问该页面,但如果不登录,几乎会立即被重定向。但我想象的情况是,我的网页上会有一些私人信息,我不希望其他人能够登录。然而,如果有人在浏览器设置中禁用javascript并键入地址 家html 他可以访问该页面,而不会被重定向。

    问题

    这种情况有什么解决办法吗?在用户访问网站文件之前,以某种方式检查用户是否已登录,如果未登录,则重定向他?

    1 回复  |  直到 8 年前
        1
  •  1
  •   bojeil    8 年前

    您无法强制此客户端。任何人都可以导航到登录页面。您必须在后端或安全规则上强制执行它。例如,假设登录页面显示用户的信息,您可以通过Firebase安全规则(如果您使用实时数据库或Firestore等)强制执行此操作,也可以将用户的ID令牌发送到服务器(如果您使用自己的后端数据库)并在返回要显示的内容之前进行验证。如果有人没有登录,他们将收到一个错误,您将捕获该错误并重定向回登录页面。

    如果您想使用会话cookie和您自己的数据库,另一个选择是尝试Firebase Auth session cookie management solution

    推荐文章