2016-08-08 2 views
0

пытается внедрить логин с паспортом JWT. как регистрация, так и логин работают нормально, токен создается при входе в систему и отправляется клиенту, который хранит и возвращает его обратно.passportjs jwt, ответ клиента не получает аутентификацию

После того, как запрос на аутентификацию пользователя достигнет приложения, и ничего не произойдет. Помогите? :)

JWT Стратегия

var JwtStrategy = require('passport-jwt').Strategy, 
    ExtractJwt = require('passport-jwt').ExtractJwt; 
    var opts = {} 
    opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); 
    opts.secretOrKey = 'secret'; 
    opts.issuer = "http://localhost:3000"; 
    opts.audience = "http://localhost:3000"; 

    passport.use('jwt', new JwtStrategy(opts, function(jwt_payload, done) { 
     console.log(1) 
     return User 
      .findOne({where : {username : jwt_payload.email } }) 
      .then(function (user) { 
       if(user === null){ 
        return TempUser 
          .findOne({where : {username : jwt_payload.email } }) 
          .then(function(user){ 
           return user === null ? 
            done(null, false, 'login error, please try again') : 
            done(null, false, 'email verification needed'); 
          }); 
       } else { 
        if (bcrypt.compareSync(password, user.dataValues.password)){   
          done(null, user); 
        } else { 
         done(null, false, 'login error, please try again'); 
        } 

      } 
     }); 
    })); 

Маршрут

router.get('/login/check', function(req, res, next) { 
     passport.authenticate('jwt', function(err, user, info) { 
      console.log(err) 
      res.json({'success' : true}); 
     }) 
    }) 

req.query возвращается клиентом

GET /login/check?%22eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJzaGFpLmthcGx1bkBnbWFpbC5jb20iLCJwYXN 
zd29yZCI6IiQyYSQxMCQ0YXpvSlVLMkltUkl3YWo0Uzlqd1RPVXh0RWIwYWphNW92UjRvUnV1QUFRdnJ5Z3g5cWttNiIsImNyZWF0ZWRBdCI6IjIwMTYtMDg 
tMDdUMTM6MjI6NDYuMzUyWiIsInVwZGF0ZWRBdCI6IjIwMTYtMDgtMDdUMTM6MjI6NTkuOTExWiIsImlhdCI6MTQ3MDY1NzY0MCwiZXhwIjoxNDcwNzU3NjQ 
wfQ.hyHDcmzJne-d6roRXBgC9aQDeZzQPgpkWWOZicQNc8c%22 - - ms - - 

ответ

1

Вы рассказываете паспорт JWT, чтобы посмотреть в заголовке авторизации для JWT, но кажется, вы пытаетесь передать JWT как строку запроса.

Попробуйте отправить заголовок: Аутентификация: «JWT» + маркер

Я на самом деле написал учебник для обоих передних и задних концов это, что вы могли бы оказаться полезными.

http://blog.slatepeak.com/refactoring-a-basic-authenticated-api-with-node-express-and-mongo/

http://blog.slatepeak.com/build-a-react-redux-app-with-json-web-token-jwt-authentication/

+0

да, понял то же самое. Но установка токена в заголовке с клиентской стороны не помогла мне. Что я сделал, перестала использовать паспорт-jwt, и теперь я просто полагаюсь на библиотеку jsonwebtoken для проверки/проверки – Skaplun

Смежные вопросы