Как установить токен-носитель JWT на интерфейс (руль) - PullRequest
0 голосов
/ 25 августа 2018

Я хочу получить доступ к защищенным маршрутам с помощью моего внешнего интерфейса, но я не могу это сделать, я могу сделать это только с почтальоном.

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

Это мой логин

// Login
router.post("/login", (req, res, next) => {
  const username = req.body.username;
  const password = req.body.password;

  User.getUserByUsername(username, (err, user) => {
    if (err) throw err;
    if (!user) {
      return res.json({
        success: false,
        msg: "User not found"
      });
    }

    User.comparePassword(password, user.password, (err, isMatch) => {
      if (err) throw err;
      if (isMatch) {
        const token = jwt.sign({
            data: user
          },
          config.secret, {
            expiresIn: 604800 // 1 week
          }
        );
        res.setHeader('Authorization', "Bearer " + token);
        res.redirect('profile');

      } else {

        return res.json({
          success: false,
          msg: "Wrong password"
        });
      }
    });
  });
});

// Profile
router.get(
  "/profile",
  passport.authenticate("jwt", {
    session: false
  }),
  (req, res, next) => {
    res.json({
      user: req.user
    });
  }
);

module.exports = router;

Passport.js

const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const User = require('../models/user');
const config = require('../config/database');

module.exports = function(passport){
  let opts = {};
  opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
  opts.secretOrKey = config.secret;
  passport.use(new JwtStrategy(opts, (jwt_payload, done) => {
    User.getUserById(jwt_payload.data._id, (err, user) => {
      if(err){
        return done(err, false);
      }

      if(user){
        return done(null, user);
      } else {
        return done(null, false);
      }
    });
  }));
}

Профиль.handlebars

<h1>Welcome on profile</h1>

Я действительно не знаю, как это сделать, я в основном на уроках, но я просто не могу найти что-то подходящее для этого.И все мои попытки ложны.

...