Я пытаюсь запросить пользователя и вернуть пользователя, только если имя пользователя и пароль совпадают с тем, что находится в базе данных. В настоящее время, если я запрашиваю имя пользователя, я получаю ответ, несмотря ни на что, не имеет значения, правильный или неправильный пароль. (Читайте в нижней части для контекста) Это то, что моя схема graphql:
signInUser: {
type: UserType,
args: {
username: { type: new GraphQLNonNull(GraphQLString) },
password: { type: new GraphQLNonNull(GraphQLString) }
},
resolve(parent, args) {
return User.findOne({ username: args.username }, (err, user) => {
if (bcrypt.compareSync(args.password, user.password)) {
return user;
} else {
return null;
}
});
}
}
Это моя схема UserType:
const UserType = new GraphQLObjectType({
name: 'User',
fields: () => ({
id: { type: GraphQLID },
username: { type: GraphQLString },
posts: {
type: new GraphQLList(PostType),
resolve(parent, args) {
// Matches posts based on username
// return _.filter(posts, { name: parent.name });
console.log(parent.name);
return Post.find({ name: parent.name });
}
}
})
});
Моя схема MongoDB:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
username: String,
password: String
});
module.exports = mongoose.model('User', userSchema);
// model = collection in database
Должен ли я использовать JWT? У меня также возникают проблемы с тем, чтобы понять, как пользователь вошел на мою клиентскую часть приложения. Я думал так: если этот запрос вернулся пустым, я мог предположить, что вход в систему не удался, в противном случае сохраните идентификатор пользователя в localStorage и используйте его всякий раз, когда. Предложения других подходов будут с благодарностью!