Pular para o conteúdo principal

Autenticação GraphQL

Aqui está um exemplo usando autenticação simples por cookie:

schema/endpoint.ts
export const gql = new GQLEndpoint('https://nosy-baritone.glitch.me', {
getRequestInit(body: any): Promise<RequestInit> {
return {
...super.getRequestInit(body),
credentials: 'same-origin',
};
}
});
export default gql;

Access tokens​

Aqui usaremos uma variável de membro para acompanhar o access token e enviá-lo em um header.

schema/endpoint.ts
export const gql = new GQLEndpoint('https://nosy-baritone.glitch.me', {
getHeaders(headers: HeadersInit): HeadersInit {
return {
...headers,
'Access-Token': this.accessToken,
};
},
});
export default gql;

Em seguida, defina o access token no login:

import gql from 'schema/endpoint';

function Auth() {
const handleLogin = useCallback(
async e => {
const { accessToken } = await login(new FormData(e.target));
// success!
gql.accessToken = accessToken;
},
[login],
);

return <AuthForm onSubmit={handleLogin} />;
}

Tratamento de logout em 401​

Caso a autorização de um usuário expire, o servidor normalmente responderá indicando isso. A forma padrão de fazê-lo é com um 401. O LogoutManager pode ser usado para disparar facilmente qualquer limpeza de desautorização.