Autenticação
Login seguro com cookies httpOnly. Sem tokens no frontend, sem gerenciamento manual de sessão.
Como funciona
A Storefront API usa cookies httpOnly para autenticação. Isso significa que o token de sessão nunca é acessível por JavaScript no navegador — proteção contra XSS por design.
- Login: O cliente chama
clientLogincom email e senha. O servidor seta o cookie automaticamente na resposta. - Requisições autenticadas: O navegador envia o cookie em cada request com
credentials: 'include'. Zero gerenciamento de tokens. - Logout: A mutation
logoutlimpa os cookies no servidor.
Login
JavaScript
const response = await fetch('/graphql', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: `mutation($input: ClientLoginMutationInput!) {
clientLogin(input: $input) { auth hostname }
}`,
variables: {
input: {
email: "cliente@email.com",
password: "senha123",
hostname: "minhaloja"
}
}
}),
credentials: 'include'
}); Importante: Sempre use
credentials: 'include' em todas as chamadas fetch. Sem isso, os cookies de autenticação não serão enviados nem recebidos.
Requisições autenticadas
Após o login, todas as requisições subsequentes com credentials: 'include' já estão autenticadas:
JavaScript
const cart = await fetch('/graphql', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: `{ shoppingCart(hostname: "minhaloja") {
totalPrice
products { title quantity }
} }`
}),
credentials: 'include'
}); Signup
JavaScript
await fetch('/graphql', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: `mutation($input: ClientSignupMutationInput!) {
clientSignup(input: $input) { auth hostname }
}`,
variables: {
input: {
name: "João Silva",
email: "joao@email.com",
password: "senha123",
hostname: "minhaloja"
}
}
}),
credentials: 'include'
}); Logout
JavaScript
await fetch('/graphql', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: `mutation($input: LogoutMutationInput!) {
logout(input: $input) { success }
}`,
variables: { input: { hostname: "minhaloja" } }
}),
credentials: 'include'
}); Google Login
Também disponível para login/signup via Google OAuth:
clientGoogleLogin— Login com conta Google existenteclientGoogleSignup— Cadastro via Google
Outras mutations de autenticação
requestResetPassword— Solicitar email de redefinição de senharesetPassword— Redefinir a senha com token recebido por emailconfirmUser— Confirmar cadastro do usuáriorefreshSession— Renovar sessão ativa