【发布时间】:2017-12-22 00:24:26
【问题描述】:
我正在尝试使用 node js 和 express 编写中间件。如果用户未通过身份验证,它会将他重定向到登录页面。
这是有效的,但是一旦重定向到登录页面,它就会一次又一次地重定向到登录页面。
app.get('/profile',function(req,res){
if (isAuthenticated()) {
res.sendFile(path.join(__dirname+'/site/profile.html'));
}else{
console.log('not authenticated user at profile');
res.redirect('/login');
}
});
用于登录
app.get('/login',function(req,res){
if (isAuthenticated()) {
res.redirect('/profile');
}else{
res.sendFile(path.join(__dirname+'/login.html'));
}
});
编辑:
控制台(循环):配置文件中未经过身份验证的用户
Firebase 身份验证方法
function isAuthenticated(){
var user = firebase.auth().currentUser;
console.log(user);
if(user && user !== null){
return true;
}else{
return false;
}
}
返回null
【问题讨论】:
-
这里没发现什么问题,应该是别的地方。
-
请看编辑
-
你为什么要使用重定向?如果没有随请求发送身份验证信息,您可以将登录页面连接为中间件,并始终使用
401状态代码显示它。 -
isAuthenticated在哪里运行?如果它在您的 express/node 进程中运行,那么firebase.auth().currentUser将不是从浏览器访问您的中间件的用户。您需要将用户的令牌从您的客户端代码传递到服务器并在那里进行验证:firebase.google.com/docs/auth/admin/verify-id-tokens
标签: javascript node.js express firebase