Генерация токена JWT в узле js api - PullRequest
0 голосов
/ 23 мая 2018

Я хочу реализовать токен JWT в своем API с входом пользователя. Я уже создал пользователя в коллекции MongoDB, и я хочу аутентифицировать его на странице входа, так как сейчас я проверяю с помощью POSTMAN, ноЯ не могу сгенерировать один, пожалуйста, кто-то может помочь

Вот мой кусок кода: -

1) server.js

const jwt = require ('jsonwebtoken«);// используется для создания, подписи и проверки токенов

const logger = require('morgan');
const mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/saddleHorseacademy");
process.env.SECRET_KEY = "SaddleHorseKey";

app.post('/loginUser',(request,response)=>{
var user =  {
   userName : request.body.userName,
   password : request.body.password
}
   userList.findOne({user},function(error,user){
     if(error){
       console.log(error);
       return response.status(500).send("unable to sign in");
     }
     if(!user){
       return response.status(404).send("not user found");
     }
     else{
       var token =  jwt.sign(user,process.env.SECRET_KEY,{
         expiressInMinutes:1440
       });

      return response.json({
        success:true,
        Message:'Check your token!',
        token: token
      });
    }

   })
});

Когда я пытаюсь поразить его почтальоном, указав формат: -

{
    "userName":"mayank_9",
    "password":"saddle09"
}

, он возвращает ответ не как пользовательнайти, но в моей БД у меня есть данные, как это

{
        "_id" : ObjectId("5ac48ba8034cf044c0832ea9"),
        "userName" : "mayank_9",
        "password" : "saddle09",
        "__v" : 0
}

пожалуйста, помогите мне застрял с этим

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Вы должны использовать:

.findOne(user, function() {...});

Без фигурных скобок.

0 голосов
/ 23 мая 2018

Метод find использует стенографическое присвоение для объекта запроса {user}, что создает следующий объект:

{
  user: {
    userName: 'mayank_9',
    password: 'saddle09'
  }
}

Поэтому find пытаетсясопоставить объект со свойством user, которое имеет этот объект в качестве значения.Я предполагаю, что это не структура записей в вашей коллекции, поэтому она не найдет соответствия.Прямая передача объекта позволит избежать этого:

 userList.findOne(user, function (err, user) {...});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...