【发布时间】:2022-02-05 01:17:32
【问题描述】:
我目前正在设计一个简单的网站,用户可以在其中以普通用户或管理员身份登录。现在我正在编写用户想要访问仅限管理员网页的部分,服务器将检索存储在 Web 浏览器本地存储中的 jwt 令牌以对其进行验证。
这就是本地存储的样子
这是获取 jwt 令牌的代码
var verifyFn = {
verifyToken: function (req, res, next) {
const authHeader = localStorage.getItem("jwt_token");
console.log("THIS IS THE HEADER")
console.log(authHeader)
if (authHeader === null || authHeader === undefined ){
return res.status(401).send({ message: 'not authenticated BEARER TOKEN ISSUE' });
}
const token = authHeader
console.log("NEW TOKEN")
console.log(token)
jwt.verify(token, config.jwt.secret, { algorithms: ['HS256'] }, (err, decoded) => {
if (err) return res.status(401).send({ message: 'not authenticated' });
req.decodedToken = decoded;
console.log("DECODED TOKEN: " + req.decodedToken)
next();
});
}
但是,每当我尝试运行服务器并浏览到管理页面时,都会出现错误提示“未定义本地存储”。因此,我不确定如何将 jwt_token 从 Web 浏览器检索到服务器后端。
【问题讨论】:
-
服务器无法访问
localStorage,因为它是浏览器功能。通常,您会希望在Authorization标头中发送令牌。 -
通常情况下,您会将令牌与标头中的每个请求一起发送。在您的情况下,您会允许页面上的人,然后手动尝试从存储中获取令牌?似乎是多余的。
标签: javascript json server jwt token