javascript – res.redirect时未找到授权令牌

我有两个应用程序,都在Nodejs上.一个前端和另一个后端.
我的后端应用程序使用express-jwt和jsonwebtoken中间件进行令牌访问保护.

我的问题是:我正在从前端向后端发出请求,在标头上传递令牌,后端接受请求并正确响应.然后在前端我将响应重定向到特定页面(res.redirect(‘/’)),在那一刻我得到错误UnauthorizedError:没有找到授权令牌

我的前端请求:

/* Authentication */
router.post('/',function(req,res,next) {

    // request login service
    request({
        uri: env.getUrl() + "/user",method: 'POST',timeout: 10000,headers: {
            'Authorization': 'Bearer '.concat(global.token)
        },form: { login : req.body.login,pwd : req.body.pwd }
    },function(error,response,body){
        if(error) {
            logger.error(error);
            res.render("error",{message: "Error getting user" }); 
        }
        else {
            if(body){
                req.session.usuario = JSON.parse(body);
                res.redirect("/");
            } else {
                res.render("login",{message: "Login Failed" });
            }
        }
    });
});

我不知道为什么会这样.你可以帮帮我吗?
提前致谢.

解决方法

重定向(通过 res.redirect)发出新的HTTP请求.这意味着Authorization标头为空.这会导致UnauthorizedError错误.

解决此问题,您有两种选择:

1.在URI中传递令牌
您可以通过以下方式使用URL中传递的令牌发出重定向

res.redirect("/?access_token=" + global.token);

2.在重定向之前设置标题
您可以在进行重定向请求之前设置“授权”标头:

req.session.access_token = global.token;

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...