问题描述
当用户登录时,访问令牌被创建并发送给用户,然后存储在 sessionStorage 中。在此之前的一切正常。我的问题是我不知道如何使用访问令牌来访问受保护的路由。
express app.js(smoothies 是受保护的路由)
app.get('/smoothies',requireAuth,(req,res) => res.render('smoothies'));
authMiddleware.js
const User = require('../models/User');
const requireAuth = (req,res,next) => {
const authHeader = req.headers['authorization']
const token = authHeader && authHeader.split(' ')[1]
// check json web token exists & is verified
if (token) {
jwt.verify(token,'night of fire',(err,decodedToken) => {
if (err) {
console.log(err.message);
res.redirect('/login?err=auth');
} else {
console.log(decodedToken);
next();
}
});
} else {
res.redirect('/login?err=auth');
}
};
// check current user
module.exports = { requireAuth };
smoothies.ejs
var myHeaders = new Headers();
myHeaders.append("Authorization",`Bearer ${token}`);
var requestOptions = {
method: 'GET',headers: myHeaders,redirect: 'follow'
};
fetch("http://localhost:3000/smoothies",requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error',error));
//Should I be even doing this fetch GET request on smoothie.ejs?
})
Smoothies 是受保护的路线。当我尝试使用 Postman 并使用授权向 (/smoothies) 发送 GET 请求时:不记名令牌,它可以工作并且我能够访问 /smoothies。但是,如果我尝试真正的应用程序,即使我的 sessionStorage 中有访问令牌,我也被拒绝访问。当我 console.log req.headers['authorization'] 时,它是未定义的,所以我猜我来自 Smoothie.ejs 的 GET 请求不起作用。有谁知道解决方案是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)