GraphQL аутентификация пользователя - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь запросить пользователя и вернуть пользователя, только если имя пользователя и пароль совпадают с тем, что находится в базе данных. В настоящее время, если я запрашиваю имя пользователя, я получаю ответ, несмотря ни на что, не имеет значения, правильный или неправильный пароль. (Читайте в нижней части для контекста) Это то, что моя схема 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 и используйте его всякий раз, когда. Предложения других подходов будут с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...