res.redirect时没有find授权令牌
我有两个应用程序,都在Nodejs上。 一个前端和另一个后端。 我的后端应用程序受到使用express-jwt和jsonwebtoken中间件的令牌访问的保护。
我的问题是:我正在从前端向后端传递标头上的令牌,后端接受请求并正确响应。 然后在前端我将响应redirect到特定的页面( res.redirect('/') ),在那一刻我得到错误UnauthorizedError:没有find授权令牌
我的前端请求:
/* 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" }); } } }); });
我不知道这是为什么发生。 你可以帮帮我吗? 提前致谢。
redirect(通过res.redirect )发出一个新的HTTP请求。 这意味着Authorization
头是空的。 这会导致UnauthorizedError错误。
要解决这个问题,你有两个select:
1.在URI中传递令牌
您可以通过以下方式使用URL中传递的令牌进行redirect:
res.redirect("/?access_token=" + global.token);
2.在redirect之前设置标题
您可以在进行redirect请求之前设置'Authorization'
标题:
req.session.access_token = global.token;
发现问题。
无论何时,当我的前端应用程序向后端(api)发出请求时,login前端的用户都会对后端进行validation,因此前端的会话也会更新。 这意味着每个请求实际上是两个请求:
- 一个作为应用程序正在做的真正的请求。
- 请求validation用户login在前端为了确定用户存在。
这个更新(第二点)是在没有提供令牌的情况下进行的。
- 处理API模型validation错误以发送回客户端
- 使用mongolab,nodejs和express提高AngularJS web应用程序的响应时间
- azure node.js console.log不能login到stdout或stderr文件
- NodeJS服务器检索部分时返回505/404错误
- NodeJS示例应用程序无法启动,无法find“configuration”?
- MongoDB的collection.find()查询挂起
- SequelizeBaseError:列“…”不存在
- 节点JS调用module.exports中的“本地”function
- 身份validation在错误的请求中失败:缺less证书