как использовать jwt с graphql nodejs - PullRequest
0 голосов
/ 26 января 2019

Здравствуйте, я новичок в graphql. Я хочу создать страницу регистрации, которая, когда пользователь регистрирует свой идентификатор и роль в таблице пользователей в базе данных mysql, будет зашифрована с помощью jwt, но когда я попробовал это, он не возвращал никаких данных. вещь, это вернуло это с graphiQL

{
  "data": {
    "registerUser": null
  }
}

import models from '../../../models/index.js';
import User from '../../types/user.js';
import UserInput from '../../inputs/user.js';
const jsonwebtoken = require('jsonwebtoken')
require('dotenv').config()

export default {
    type: User,
    args: {
        user: {
            type: UserInput
        }
    },
    resolve (_,args) {
        models.user.create({ 
            name: args.user.name,
            email: args.user.email,
            password: args.user.password,
            role:"Student"
        }).then(function(newUser) {
            return jsonwebtoken.sign(
                { id: newUser.id, role: newUser.role },
                process.env.JWT_SECRET,
                { expiresIn: '1y' }
              )
        });
    }
};

Пожалуйста, как я могу решить эту проблему, чтобы он вернул токен JWT

1 Ответ

0 голосов
/ 28 января 2019

Я думаю, что вы пропустили только оператор возврата до models.user.create:

resolve (_,args) {
  return models.user.create({ 
    name: args.user.name,
    email: args.user.email,
    password: args.user.password,
    role:"Student"
  }).then(function(newUser) {
    return jsonwebtoken.sign(
      { id: newUser.id, role: newUser.role },
      process.env.JWT_SECRET,
      { expiresIn: '1y' }
    )
  });
}

Похоже, вы заинтересованы в аутентификации с помощью JWT и GraphQL.Я думаю, что лучше использовать контекст и установить JWT в cookie.Я написал короткую статью об этом, если вам интересно.

...