Reactjs 如何从Google OAuth维护accessToken?

Reactjs 如何从Google OAuth维护accessToken?,reactjs,express,jwt,passport.js,Reactjs,Express,Jwt,Passport.js,我正在尝试用MERN堆栈实现googleoauth 有一个很好的博客,如下图所示 我使用react google登录作为前端,passport、passport google令牌和jsonwebtoken作为后端。 在express js获得accessToken并创建用户文档之前,一切都很好,但我实际上不知道下一步是什么来保持登录和验证它。上面的文章提到了这个问题,但他还没有实现 有什么信息可以解决这个问题吗 步骤7:将JWT令牌返回到前端。您对该令牌所做的操作不在本教程的范围内,但可能应该

我正在尝试用MERN堆栈实现googleoauth

有一个很好的博客,如下图所示

我使用react google登录作为前端,passport、passport google令牌和jsonwebtoken作为后端。 在express js获得accessToken并创建用户文档之前,一切都很好,但我实际上不知道下一步是什么来保持登录和验证它。上面的文章提到了这个问题,但他还没有实现

有什么信息可以解决这个问题吗

步骤7:将JWT令牌返回到前端。您对该令牌所做的操作不在本教程的范围内,但可能应该使用它来验证每个登录用户的操作

我的代码如下

import React from 'react';
import GoogleLogin from 'react-google-login';
import api from '../config/api';
import { useGlobalState } from '../config/globalState';
import { AUTH_SIGN_IN, SET_USER } from '../config/types';


const Navbar = () => {
  const { state, dispatch } = useGlobalState();
  const { isLoggedIn } = state;

  const responseGoogle = async (data) => {
    try {
      const { accessToken } = data;

      const res = await api.post('/api/auth/signin', {
        access_token: accessToken
      });
      console.log('res.data:', res.data);

      dispatch({ type: AUTH_SIGN_IN });
    } catch (err) {
      console.log('err: ', err.message);
    }

  };

  return (
    <div>
      This is the title
      {
        !isLoggedIn &&
        <GoogleLogin
          clientId={process.env.REACT_APP_GOOGLE_CLIENT_ID}
          buttonText="Login with Google"
          onSuccess={responseGoogle}
          onFailure={responseGoogle}
        />
      }
    </div>
  )
}

export default Navbar
这是/api/auth/signin路由处理部分

const JWT = require('jsonwebtoken');
const User = require('../models/user');

const signToken = user => {
  return JWT.sign({
    iss: 'AnySecret',
    sub: user.id,
    iat: new Date().getTime(),
    exp: new Date().setDate(new Date().getDate() + 1)
  }, process.env.JWT_SECRET);
}

module.exports = {
  signIn: async (req, res) => {
    console.log('signIn called');
    const token = signToken(req.user);
    res.cookie('access_token', token, {
      httpOnly: true
    });
    res.status(200).send({
      user: req.user,
      token
    });
  }
}
const JWT = require('jsonwebtoken');
const User = require('../models/user');

const signToken = user => {
  return JWT.sign({
    iss: 'AnySecret',
    sub: user.id,
    iat: new Date().getTime(),
    exp: new Date().setDate(new Date().getDate() + 1)
  }, process.env.JWT_SECRET);
}

module.exports = {
  signIn: async (req, res) => {
    console.log('signIn called');
    const token = signToken(req.user);
    res.cookie('access_token', token, {
      httpOnly: true
    });
    res.status(200).send({
      user: req.user,
      token
    });
  }
}