簡體   English   中英

未經授權:錯誤401 Passport-jwt

[英]Unauthorized: Error 401 passport-jwt

護照

var jwtOptions = {
        jwtFromRequest: ExtractJwt.fromAuthHeader(),
        secretOrKey: config.secret
    }

    var jwtLogin = new JwtStrategy(jwtOptions, function (jwt_payload, done) {
        console.log('payload received', jwt_payload);
        User.findOne(jwt_payload._id, function (err, user) {
            if (err) {
            return done(err, false,{error:'its failed'});
        }
        if (user) {
            return done(null, user);
        }
        else {
            done(null, false,{error:'401'});
        }
    });
});

passport.use(jwtLogin);

Authentication.js

function generateToken(user) {
    return jwt.sign(user, key.secret, {
        expiresIn: '1h',
    });
};

function setUserInfo(request) {
    console.log('inside setUserInfoo', request);
    return {
        _id: request._id,
        email: request.email,

    }
};
exports.login = function (req, res, next) {
    console.log('inside login function');
    var userInfo = setUserInfo(req.user);
    res.status(200).json({
        token: generateToken(userInfo), //removed 'JWT' + generrateToken...Reading your answers.
        user: userInfo
    });
};

routes.js

//Assuming every thing is required correctly.

var requireAuth = passport.authenticate('jwt',{session:false});

 app.use('/api/contacts', contactRoutes);

    contactRoutes.get('/',requireAuth, function(req,res){
        console.log('inside get route of contacts');
        contactControllers.getContacts(req,res)});

    contactRoutes.post('/', requireAuth, function (req, res) {
        console.log("inside post routes of contacts");
        contactControllers.postContacts(req, res); //logic is correct but generate token syntax is similar to login function one.
    });

服務類別.ts

獲取數據。

getContacts() {
    console.log('Inside getContacts() of service class');
    return new Promise((resolve, reject) => {
      let headers = new Headers();
      headers.append('Authorization', this.auth.token);
      console.log('inside promise');

      this.http.get('http://localhost:8080/api/contacts/', { headers: headers }).map(res =>
        res.json())
        .subscribe(data => {
          resolve(data);
          console.log('inside resolve of service class', data);
        },
        (err) => {
          reject(err);
        });
    });
  }

我不在這里使用授權,僅在身份驗證。服務類別中的呼叫get帖子時,它將顯示未授權。請提供幫助。

在Authentication.js文件中,我使用了Token:在您的回答之后,我刪除了'JWT'。但是隨后也會顯示401 Unauthorized錯誤。

請幫忙!

在服務文件中的headers.append()中,請求授權,將其切換為Authentication,看看是否可行

headers.append('Authorization', 'JWT ' + this.auth.token);

您可以嘗試以下方法:

headers.append('Authorization', 'Bearer ${this.auth.token}');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM