簡體   English   中英

如何在graphql node.js中使用jwt

[英]how to use jwt with graphql nodejs

你好,graphql的新手,我想創建一個注冊頁面,當用戶在mysql數據庫中的用戶表中注冊其ID和角色時,將使用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令牌

我認為您只錯過了models.user.create之前的return語句:

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。 如果您有興趣,我寫了一篇簡短的文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM