Всем привет! Сегодня я пишу статью об аутентификации запросов Graphql с помощью токенов JWT. Чтобы добиться этого, сначала я собираюсь настроить сервер, на котором пользователь сможет выполнить регистрацию / вход. После успешного входа в систему мы делаем запрос, требующий аутентификации.
Итак, стек технологий, который я собираюсь использовать, это :: Nodejs, Expressjs, Typeorm, Typegraphql, graphql, jsonwebtoken, ApolloServerExpress и многие другие.
Ссылка на Github: Аутентифицировать запрос Graphql с помощью JWT
В этом примере я использую редактор кода VS. Теперь сначала установите node и npm в вашу систему. Пожалуйста, выполните следующие шаги для быстрой настройки сервера:
- создать папку «сервер»
- npm install -g typeorm
- typeorm init - сервер имен - база данных postgres
- cd сервер
- npx tsconfig.json и выберите в опции «узел».
Теперь я собираюсь использовать пряжу для дальнейшего развития этого проекта.
Чтобы установить пряжу: npm install yarn -g
Теперь обновите наши пакеты, нажав:
- пряжа установить
- пряжа Upgrade-Interactive - последняя. На этом этапе выберите следующие пакеты:
@ types / node @ 12.12.7 », [email protected] , [email protected] . - Обновите файл ormconfig.json, указав сведения о postgres.
Чтобы проверить срабатывание сервера: начало пряжи
и просмотрите данные в терминале.
$ ts-node src / index.ts
Вставка нового пользователя в базу данных…
Сохранение нового пользователя с id: 2
Загрузка пользователей из базы данных…
Загруженные пользователи: [Пользователь {id: 1, firstName: 'Timber', lastName: 'Saw', возраст: 25}]
Теперь, чтобы продолжить, настройте express, graphql и apollo-server-express.
- пряжа добавить экспресс apollo-server-express graphql type-graphql bcryptjs
- пряжа add -D @ types / node @ types / graphql @ types / express @ types / bcryptjs
Теперь обновите index.ts
Ваш сервер Graphql готов. просто нажмите (http: // localhost: 4000 / graphql)
Теперь обновите еще больше, чтобы реализовать логику регистрации / входа
Теперь установите jsonwebToken:
1. yarn add jsonwebtoken
2. yarn add -D @ types / jsonwebtoken
return {accessToken: sign ({userId: user.id}, «MySecretKey», {expiresIn: «15m»})};
В строке выше мы предоставляем пользователю уникальный токен каждый раз, когда он / она входит в систему.
До сих пор все идет гладко, но для аутентификации наших запросов нам нужно какое-либо промежуточное программное обеспечение, которое аутентифицирует наш запрос, а затем позволяет нам использовать этот запрос.
Мы делаем запрос «Я», которому нужен токен jwt для аутентификации и определения того, какой пользователь в настоящее время находится в системе.
@Query (() = ›String)
@UseMiddleware (isAuth)
async Me (@Ctx () {payload}: MyContext) {
return` Ваш идентификатор пользователя: $ {payload! .userId} `;
}
UseMiddleWare - это ключевой декоратор, с помощью которого мы реализуем нашу логику аутентификации.
В этом промежуточном программном обеспечении мы получаем заголовки «авторизации» из запроса, который, как вы можете видеть, мы отправляем на рисунке выше как httpheader.
Ссылка на Github: Аутентифицировать запрос Graphql с помощью JWT