Всем привет! Сегодня я пишу статью об аутентификации запросов Graphql с помощью токенов JWT. Чтобы добиться этого, сначала я собираюсь настроить сервер, на котором пользователь сможет выполнить регистрацию / вход. После успешного входа в систему мы делаем запрос, требующий аутентификации.

Итак, стек технологий, который я собираюсь использовать, это :: Nodejs, Expressjs, Typeorm, Typegraphql, graphql, jsonwebtoken, ApolloServerExpress и многие другие.

Ссылка на Github: Аутентифицировать запрос Graphql с помощью JWT

В этом примере я использую редактор кода VS. Теперь сначала установите node и npm в вашу систему. Пожалуйста, выполните следующие шаги для быстрой настройки сервера:

  1. создать папку «сервер»
  2. npm install -g typeorm
  3. typeorm init - сервер имен - база данных postgres
  4. cd сервер
  5. npx tsconfig.json и выберите в опции «узел».

Теперь я собираюсь использовать пряжу для дальнейшего развития этого проекта.

Чтобы установить пряжу: npm install yarn -g

Теперь обновите наши пакеты, нажав:

  1. пряжа установить
  2. пряжа Upgrade-Interactive - последняя. На этом этапе выберите следующие пакеты:
    @ types / node @ 12.12.7 », [email protected] , [email protected] .
  3. Обновите файл ormconfig.json, указав сведения о postgres.

Чтобы проверить срабатывание сервера: начало пряжи
и просмотрите данные в терминале.

$ ts-node src / index.ts
Вставка нового пользователя в базу данных…
Сохранение нового пользователя с id: 2
Загрузка пользователей из базы данных…
Загруженные пользователи: [Пользователь {id: 1, firstName: 'Timber', lastName: 'Saw', возраст: 25}]

Теперь, чтобы продолжить, настройте express, graphql и apollo-server-express.

  1. пряжа добавить экспресс apollo-server-express graphql type-graphql bcryptjs
  2. пряжа 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