Ich versuche, Autorisierungstoken auf der Clientseite zu integrieren. Ich gebe dieses Token in der Middleware weiter. Wenn der Benutzer sich abmeldet, setzen Sie das Geschäft zurück und erhalten Sie ein neues Token. Nun, wenn ich neue Anforderung senden ist es immer noch das alte Token Senden (gecached)Apollo resetStore funktioniert nicht in Angular-Client
Hier ist mein Code app.module.ts
const networkInterface = createNetworkInterface({
uri: "http://localhost:3000/graphql"
});
networkInterface.use([
{
applyMiddleware(req, next) {
if (!req.options.headers) {
req.options.headers = {}; // Create the header object if needed.
}
req.options.headers.authorization = localStorage.getItem(AUTH_TOKEN);
next();
}
}
]);
export function provideClient(): ApolloClient {
return new ApolloClient({
networkInterface,
dataIdFromObject: (o: any) => `${o.__typename}-${o.id},`
});
}
Wenn ich logout Ich habe diesen Code
localStorage.removeItem(AUTH_TOKEN);
this._apollo.getClient().resetStore();
Dann, wenn ich eine andere Anfrage mache, nimmt es immer noch alte Token in Anfrage-Header.
Wie kann ich dies mit dem neuen Token aktualisieren?
networkInterface.use([{
applyMiddleware(req, next) {
if (!req.options.headers) req.options.headers = {}
const token = localStorage.getItem('token')
req.options.headers.authorization = token ? token : null
next()
}
}])
Hinweis den ternären Operator dort, token ? token : null
: