Ahora estoy haciendo un proyecto de autenticación para aprender a integrarme con FE y GraphQL para almacenar el token de actualización dentro de las cookies y usar el token de acceso para obtener la información. Desafortunadamente, no pude almacenar el token de actualización después de hacer clic en el botón de inicio de sesión y el error cors incluso si estoy siguiendo todos los detalles y pasos del sitio web oficial. Gracias a todos por estar atentos
Código del servidor
async function startApolloServer() { const app = express(); app.use(cors({ origin:'*', credentials:true, //access-control-allow-credentials:true })) const httpServer = http.createServer(app); app.use(cookiesParser()); app.post("/refresh_token", async (req: Request, res: Response) => { console.log(req.cookies); const token = req.cookies.jid; if (!token) { return res.send({ status: false, accessToken: "" }); } let payload: any = null; try { payload = verify(token, process.env.SECRET_KEY as string); } catch (error) { return res.send({ status: false, accessToken: "" }); } // token is valid, find user and send back accessToken const user: any = await AppDataSource.manager.getRepository(User).findOne({ where: { id: payload.userId, }, }); if (!user) { return res.send({ status: false, accessToken: "" }); } if (user.tokenVersion !== payload.tokenVersion) { return res.send({ status: false, accessToken: "" }); } sendRefreshToken(res, createRefreshToken(user)); return res.send({ status: true, accessToken: createAccessToken(user) }); }); const schema = await buildSchema({ resolvers: [UserQuery, UserMutation], }); await AppDataSource.initialize(); const server = new ApolloServer({ schema, context: ({ req, res }) => { return { req, res }; }, csrfPrevention: true, plugins: [ApolloServerPluginDrainHttpServer({ httpServer })], }); await server.start(); server.applyMiddleware({ app }); await new Promise<void>((resolve) => httpServer.listen({ port: 4000 }, resolve) ); console.log(`🚀 Server ready at http://localhost:4000${server.graphqlPath}`); }Código de interfaz
const client = new ApolloClient({ uri: "http://localhost:4000/graphql", cache: new InMemoryCache(), credentials:'include' });Error
Eliminar * y usar
app.use(cors())Si desea permitir el acceso al backend, puede acceder desde cualquier lugar. O puede usar
var corsOptions = { origin: 'http://example.com', }Si permite algún dominio específico. Para más opciones ver la documentación .