Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 阻止普通用户通过Google auth callback Express路由_Node.js_Express_Oauth 2.0 - Fatal编程技术网

Node.js 阻止普通用户通过Google auth callback Express路由

Node.js 阻止普通用户通过Google auth callback Express路由,node.js,express,oauth-2.0,Node.js,Express,Oauth 2.0,我有以下程序可以使用Google登录: app.get('/oauth/google', function(req, res) { res.redirect(<OAUTH2_URL>); }); app.get('/oauth/google/callback', function(req, res, next) { var code = req.query.code; if(!code || !_.isString(code)) { return next(n

我有以下程序可以使用Google登录:

app.get('/oauth/google', function(req, res) {
  res.redirect(<OAUTH2_URL>);
});

app.get('/oauth/google/callback', function(req, res, next) {

  var code = req.query.code;
  if(!code || !_.isString(code)) {
    return next(new Error(400, 'Invalid code'));
  }

  .
  .
  .

  // I try the code to see if it is valid.

});
app.get('/oauth/google',函数(req,res){
res.redirect();
});
app.get('/oauth/google/callback',函数(req,res,next){
var代码=req.query.code;
如果(!code | |!|.isString(code)){
返回next(新错误(400,“无效代码”);
}
.
.
.
//我尝试代码,看看它是否有效。
});
我如何只允许google重定向回应用程序以访问回调路由,并阻止普通用户使用它?

如果您正在使用,那么您可以在重定向到google之前从
/oauth/google
路径设置一个标志,然后在
/oauth/google/callback
上检查该标志,然后重置

app.get('/oauth/google', function(req, res) {
  req.session.authFlag = true;
  res.redirect(<OAUTH2_URL>);
});

app.get('/oauth/google/callback', function(req, res, next) {
  if (!req.session.authFlag) return next(new Error(403, 'Forbidden'));
  else req.session.authFlag = false;
  ...
});
app.get('/oauth/google',函数(req,res){
req.session.authFlag=true;
res.redirect();
});
app.get('/oauth/google/callback',函数(req,res,next){
如果(!req.session.authFlag)返回next(新错误(403,“禁止”);
else req.session.authFlag=false;
...
});
如果您没有使用会话,或者由于客户端不支持cookies(这也是上述解决方案中的一个问题!)而导致会话不可用,那么我猜您最好只检查
req.query.code
,因为除了该查询字符串(
req.query.code
)谷歌重定向的请求和普通用户的直接请求没有区别。

(…req.headers.referer/origin在理论上是可以工作的,但是)

您在google auth中使用了什么?passport?@laggingReflect只是一个简单的重定向到“”的过程,其中包含我所需的作用域。当用户接受时,Google将它们发送回我在开发者控制台中给出的重定向URL,即“/oauth/Google/callback”。哇,为什么我没有想到呢?谢谢你!