Node.js中如何从Firebase认证中间件获取uid到路由?
如何在受保护路由中访问Firebase认证的UID?
你只需要把解码得到的UID挂载到Express的req请求对象上即可——因为整个请求链路中的req是同一个对象,后续的路由处理函数可以直接访问这个属性。
修改后的verifyFirebase.js
function checkAuth(req, res, next) { if (req.header('auth-token')) { admin.auth().verifyIdToken(req.header('auth-token')) .then((decodedToken) => { // 将UID挂载到req对象,供后续路由使用 req.uid = decodedToken.uid; next(); }).catch((err) => { console.log(err); res.status(403).send('Unauthorized'); }); } else { res.status(403).send('Unauthorized'); } } module.exports.checkAuth = checkAuth;
修改后的routes.js
const verify_firebase = require('./verifyFirebase').checkAuth; router.get('/', verify_firebase, (req,res) => { // 直接通过req.uid获取认证用户的UID res.json({ message: "verified", userUid: req.uid }); })
这是Express生态里传递请求级数据的标准方式,所有后续的中间件和路由处理函数都能访问到挂载在req上的属性,完全适配你的场景。
内容的提问来源于stack exchange,提问作者Ugurcan Kaya
相关产品推荐
相关产品推荐

