用户注册的 GraphQL 突变不适用于 jwt
Posted
技术标签:
【中文标题】用户注册的 GraphQL 突变不适用于 jwt【英文标题】:GraphQL Mutation for User SignUp not working with jwt 【发布时间】:2019-10-29 16:36:07 【问题描述】:我正在关注这个 tutorial by Robin Wieruch 在使用 jwt 和 GraphQL 实现用户注册时,我无法通过 GraphQL Mutation 提供值 Server.js
const server = new ApolloServer(
typeDefs: gql(typeDefs),
resolvers,
context: db ,
secret: process.env.SECRET,
);
models/user.js
export default (sequelize, DataTypes) =>
const User = sequelize.define('user',
id:
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
,
username:
type: DataTypes.STRING,
unique: true,
allowNull: false,
,
password:
type: DataTypes.STRING,
allowNull: false,
validate:
notempty: true,
len: [8],
,
,
email:
type: DataTypes.STRING,
unique: true,
allowNull: false,
validate:
isEmail: true,
,
,
createdAt:
,
createdAt:
type: DataTypes.DATE,
allowNull: true
,
updatedAt:
type: DataTypes.DATE,
allowNull: true
,
deleted_at:
type: DataTypes.DATE,
allowNull: true
,
freezeTableName: true,
);
User.beforeCreate( async user =>
user.password = await user.generatePasswordHash();
);
User.prototype.generatePasswordHash = async function()
const saltRounds = 10;
return await bcrypt.hash(this.password, saltRounds);
;
return User;
;
模式
type Mutation
signUp(username: String!, email: String!, password: String!): Token!
type Token
token: String!
解析器
signUp: async(
parent,
username, password, email,
db, secret ,) =>
const user = await db.user.create(
username,
password,
email,
);
return token: createToken(user, secret, '30m');
,
我目前被以下 GraphiQL Mutation 卡住了:
mutation($username: String!, $password: String!, $email: String!)
signUp(username: $username, password: $password, email: $email)
u
如您所见,当我输入 u 时,我应该会看到用户名、密码和电子邮件自动填充。或者可能是我的变异格式不正确。
请指正,我错了。
【问题讨论】:
signUp(.....): Token!
- 你应该看到token
@xadm 的意思是,我是否应该连同 Mutation 一起提供令牌?
这是一个变异结果
@xadm 那么,我该怎么办呢?
'令牌,无论是在注册还是登录时获得的,都会在成功的 GraphQL 登录或注册突变后返回给客户端应用程序。客户端应用程序必须将令牌存储在浏览器会话存储之类的地方。'
【参考方案1】:
mutation($email: String!, $username: String!, $password: String!)
signUp(email: $email, username: $username, password: $password)
token
【讨论】:
虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高答案的长期价值,请在此处阅读更多信息:meta.***.com/questions/300837/…以上是关于用户注册的 GraphQL 突变不适用于 jwt的主要内容,如果未能解决你的问题,请参考以下文章
Graphql 突变查询不适用于 express-graphql
如何结合突变在 django-graphql-jwt 中创建或登录用户?
GraphQL - JWT - 更改 verifyToken 突变的有效负载 - django
Django GraphQL JWT:tokenAuth 突变返回“str 对象没有属性解码”