Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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 oAuth在前端还是服务器端?_Node.js_Reactjs_Oauth_Passport.js_Auth0 - Fatal编程技术网

Node.js oAuth在前端还是服务器端?

Node.js oAuth在前端还是服务器端?,node.js,reactjs,oauth,passport.js,auth0,Node.js,Reactjs,Oauth,Passport.js,Auth0,我有一个MERN应用程序(前端是react,后端是node、express和Mongo) 我希望为用户实现oAuth登录 到目前为止,我正在使用Google api在前端执行自动操作,然后将令牌发送到服务器,在服务器上获取Google用户并检查数据库是否存在用户ID,或者创建一个新用户并返回jwt以供将来验证 现在我正在考虑使用passportjs作为我的oauth中间件(主要是因为我需要更多的身份验证提供商,如Facebook等),但是只在服务器上进行身份验证是一个好主意吗 我也在考虑使用au

我有一个MERN应用程序(前端是react,后端是node、express和Mongo)

我希望为用户实现oAuth登录

到目前为止,我正在使用Google api在前端执行自动操作,然后将令牌发送到服务器,在服务器上获取Google用户并检查数据库是否存在用户ID,或者创建一个新用户并返回jwt以供将来验证

现在我正在考虑使用passportjs作为我的oauth中间件(主要是因为我需要更多的身份验证提供商,如Facebook等),但是只在服务器上进行身份验证是一个好主意吗

我也在考虑使用auth0,它有前端和服务器端选项,但也不确定哪种策略更好


非常感谢您的帮助。

我最近花了好几个晚上来处理这个

一般来说:

  • 客户端加载并启动google gapi脚本
  • 请求用户同意
  • 谷歌发送代币
  • 您从服务器向Google发送此令牌并确认用户
让我知道,如果我能提供更多信息,我已经用nginx/node/passport实现了它,并在前端做出反应

const loginGoogle = async () => {
  const loadGapi = () =>
    new Promise((resolve, reject) => {
      const script = document.createElement('script');
      script.src = 'https://apis.google.com/js/api.js';  //loading gapi Script
      console.log('SCRIPT: ', script);
      script.onload = () => {
        console.log('GAPIS SCRIPT LOADED');
        gapi.load('auth2', () => {
          const auth2 = gapi.auth2.init(options);
          console.log('AUTH2: ', auth2);
          resolve(auth2);
        });
      };
      document.body.appendChild(script);
    });
  const ath2 = await loadGapi();
  const code = await ath2.grantOfflineAccess();
  return PostApi('auth/getgoogletoken', code); // sending to server for further processing
};