如何检查用户是不是在客户端使用 Firebase 登录? [关闭]

Posted

技术标签:

【中文标题】如何检查用户是不是在客户端使用 Firebase 登录? [关闭]【英文标题】:How to check wether the user is logged in with Firebase on the Client Side? [closed]如何检查用户是否在客户端使用 Firebase 登录? [关闭] 【发布时间】:2017-03-06 08:59:59 【问题描述】:

编辑:

感谢您的帮助!您帮我查明了问题并向我展示了我正在寻找的解决方案:Accessing Express.js local variables in client side javascript


代码:

index.ejs

$('.UpvoteButton').click(function () 
    if (authdata == null) 
        return res.redirect('/users/login');
    
    else 
        var $this = $(this);
        var $other = $('.DownvoteButton');
        if ($this.hasClass("on")) 
            $this.removeClass("on");
         else if (!$this.hasClass('on') && $other.hasClass("on")) 
            $this.addClass('on');
            $other.removeClass("on");
         else 
            $this.addClass('on');
         
     
); 

app.js

//Global vars
app.use(function(req, res, next) 
    res.locals.authdata = firebase.auth().currentUser;
    next();
);  

问题:

当我点击时,什么也没有发生。在我没有 if-else 语句和 redirect 语句之前它可以工作。

注意:这是在 EJS 文件中。我正在使用 Node.js。


问题:

我做错了什么?

【问题讨论】:

永远不会那样工作,你不能在客户端做res.redirect @adeneo 我也试过了:window.location.href = "/users/login"; 正如@Jamiec 所说,提供的示例很难测试和调试;请发布authdata 的值是多少。是否也可以将authdata == null替换成false来测试else语句是否运行? 在JQuery的前端不能直接访问服务器端变量 ***.com/questions/10919650/… 【参考方案1】:

如前所述,您正在尝试访问客户端的服务器端变量。看看这个:Accessing EJS variable in Javascript logic。

基本上,您需要在客户端声明变量:

<script>
    var authdata = <%= authdata %>            
</script>

然后,您可以添加代码。请记住将重定向更改为客户端可识别的内容,即。 window.location.href = "/users/login";

【讨论】:

以上是关于如何检查用户是不是在客户端使用 Firebase 登录? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户是不是存在于 Firebase 中?

当用户在flutter中使用otp方法登录时,如何检查用户详细信息是不是已经存在于firebase中? [复制]

如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?

如何使用geofire查询检查10公里半径内是不是存在firebase用户

Firebase 规则 - 如何检查用户是不是存在于子文档中

如何检查电子邮件地址是不是已在使用 Firebase