токен и дальше я его буду использовать для получения какой-либо информации. Я написал валидацию но проблема в том что если я хочу авторизоваться или создать аккаунт то все равно он просит токен. Можно ли как то игнорировать валидацию токена для входа и создания аккаунта? Можно было бы написать проверку на if (
authorization
) { Но это не совсем правильный подход. Код:
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => {
const authorization = req.headers.authorization || null
let loggedIn
const token = authorization.replace('Bearer ', '')
try {
loggedIn = jwt.verify(token, 'somesupersecretkey')
} catch (error) {
throw new AuthenticationError('you must be logged in to query this schema')
}
return {
loggedIn,
models: {
User,
Page,
Post,
Audio,
Photo
}
}
}
})
Мы у себя вынесли всю авторизацию на отдельный эндпоинт. Это проще в обслуживании, меньше риска что неавторизованные пользователи получат доступ к закрытым данным. Типа один graphql для гостей, второй для авторизированных.
можете написать авторизацию с использованием директив, удобно помечать какие query, mutation требуют авторизации, какие нет. Либо использовать graphql-shield
Обсуждают сегодня