У меня проблема в аутентификации с jwt

Это не первый раз, но я не знаю, почему jsonwebtoken не работает с первым приложением я много раз пытался достичь некоторой страницы, которая должна иметь определенный токен, чтобы достичь, и я получил доступ к этому токену, поэтому при попытке достичь этой страницы он говорит мне, что нет предоставленного токена,
Я уверен, что мой код полностью правильный и я спросил на stack overflow и никто не ответил на этот раз я попробовал кое-что другое, что является passport-jwt и все еще автоверизация не работает, что это за код:

const express = require("express") ;
const router = express.Router() ;
const bcrypt = require ("bcryptjs")
const passport = require("passport") ;
const passportJwt = require("passport-jwt")
const jwt = require ("jsonwebtoken") ;

const User = require("../models/userModel.js")
require("../config/passport.js")(passport)
//register

router.post("/signup" , (req ,res)=>{

  let newUser = new User({
    name : req.body.name,
    email:req.body.email ,
    password:req.body.password
  })
  User.addUser(newUser , (err , user)=>{
    if (err){
      res.json({success:false , msg:"failed to register"+err})
    }else {
      res.json({success:true , msg:"register is done"})
    }
  })
})
router.post("/authenticate" , (req ,res)=>{
  let email = req.body.email ;
  let password = req.body.password ;

  User.getUserByEmail(email , (err , user)=>{
    if(err)throw err
    if(!user){
      return res.send({success:false , msg:"this email is not exist"})
    }else{
      User.comparePassword(password , user.password , (err , isMatch)=>{
        if (err) throw err ;
        if(isMatch){
          const token = jwt.sign({id:user._id} , "hello secret" )
          res.json({
            success:true ,
            token:"JWT "+token ,
            user:{
              id:user._id ,
              name:user.name,
            }
          })
        }else{
          res.send({success:false , })
        }
      })
    }
  })

})
router.get("/profile",passport.authenticate('jwt' , {session:false}) , (req ,res,next)=>{
  res.send("here's your profile")
})


module.exports = router ;
Войти в полноэкранный режим Выход из полноэкранного режима

это код маршрута, который называется userRoute.js
и код файла passport.js :

const JwtStrategy = require('passport-jwt').Strategy;
const  ExtractJwt = require('passport-jwt').ExtractJwt;
const User = require ("../models/userModel.js")

module.exports = function(passport){
let opts = {}
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = 'hello secret';
opts.issuer = 'accounts.examplesoft.com';
opts.audience = 'yoursite.net';
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    User.findOne({id: jwt_payload.sub}, function(err, user) {
        if (err) {
            return done(err, false);
        }
        if (user) {
            return done(null, user);
        } else {
            return done(null, false);
            // or you could create a new account
        }
    });
}));
}

Войти в полноэкранный режим Выход из полноэкранного режима

а вот файл app.js :

const express = require("express") ;
const path = require ("path") ;
const bodyParser = require ("body-parser") ;
const passport = require("passport") ;
const cors = require("cors")
const mongoose = require("mongoose") ;
const userRoute = require("./routes/userRoute.js")
const config = require("./config/dbConfig.js")
var session = require('express-session');
const app = express() ;

//connecting to the database
mongoose.connect(config.database)
mongoose.connection.on('connected' ,  ()=>{
  console.log("hello world")
})
//port number

const port = 3000 ;
//cors
app.use(session({ secret: 'hello secret' }));
app.use(cors()) ;
//set static folder
app.use(express.static(path.join(__dirname , "Notes-master")));
//body parser
app.use(bodyParser.json()) ;

//using data from routes
app.use(passport.initialize());
app.use(passport.session());
require("./config/passport")(passport);
app.use(userRoute)

app.get("/", (req , res)=>{
  res.send("here's home")
})
// passport authentication
//server listening

app.listen(port , ()=>{
  console.log(`server started on a port ${port}`)
}) ;

Вход в полноэкранный режим Выход из полноэкранного режима

Эта проблема отняла у меня много времени, пожалуйста, помогите мне решить ее.

Оцените статью
devanswers.ru
Добавить комментарий