我正在开发一个 Node.js Express 应用程序,使用 JWT 进行身份验证以访问我的管理页面。我用 Postman 测试了我的路线,效果很好,问题出在客户端。我将简化我的代码和我的问题,使问题更加清晰。
我的问题是,在使用 localStorage
将 token 存储在本地后,如何才能重定向到我的管理页面?
我已经尝试用 ajax
解决这个问题,但页面还是一样。我也试过 window.location='/admin'
但在这个中我无法发送包含 token 的 header。
首先是我的服务器端:
app.get('/admin', verifyToken, function(req, res, next) {
res.render('views/admin');
});
function verifyToken(req, res, next) {
var token = req.headers['access-token'];
if (!token)
return res.status(401).send({ auth: false, message: 'NO TOKEN PROVIDED' });
jwt.verify(token, config.secret_key, function(err, decoded) {
if (err)
return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' });
console.log("Token is valid");
next();
});
}
客户端:
function login(event) {
event.preventDefault();
let formData = new FormData(event.target);
fetch("/admin/login", {
method: 'POST',
body: formData
}).then(function (response) {
return response.json();
}).then(function (result) {
if (result.auth === true) {
localStorage.token = result.token;
//HERE IS THE PROBLEM
$.ajax({
type : "GET",
url : "/admin",
beforeSend: function(xhr){
xhr.setRequestHeader('access-token', localStorage.token);
},
success : function(result) {
//HERE IS THE PROBLEM
window.location='/admin';
}
});
} else {
console.log("Incorrect username or password.");
}
});
}
那么如何像在客户端的 Postman 中那样在 header 中发送 token 并自动重定向,有什么方法吗?非常感谢。
最佳答案
如果您的管理页面呈现为整页,则只需在/admin ajax 请求成功处理程序中执行 document.write(result)
success : function(result) {
document.write(result)
}
关于javascript - 如何在客户端实现 JSON Web token - Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48935946/