У меня проблемы с моим почтальоном, который может прочитать authtoken, который автоматически собирается с помощью javascript тестового скрипта - PullRequest
0 голосов
/ 14 марта 2020

Моя проблема заключается в успешном получении authToken с помощью этих Javascript кодов, которые размещены на тестовой вкладке как на моих конечных точках входа, так и на входе. вкладка в почтальоне. Это тестовый код;

if(pm.response.code === 200){
pm.environment.set('authToken',pm.response.json().token);}

Postman setup

Ниже приведен мой рабочий процесс;

Auth код (authSign. js) ;

const jwt = require('jsonwebtoken')
const User = require('../models/users')
const auth = async(req,res,next)=>{
try{

     // This is the actual line of code that does not work when using the js test script.But it does 
     //work when the test script is not used
    const token = req.header('Authorization').replace('Bearer ','')

    //there should be space after the Bearer!
    const decoded = jwt.verify(token,process.env.JWT_SECRET)

    const user = await User.findOne({_id:decoded._id,'tokens.token':token})

    if(!user){
        throw new Error()
    }
    req.token = token
    req.user = user


    next()
}
catch(e){

    res.status(401).send({Error:'Please Authenticate'})
}}    module.exports = auth

Auth Controller (авторизация js)

const User = require('../models/users')
  // const Companies = require('../models/companies')
  // Sign out from one device
 exports.signout = async(req,res)=>{
try{
    req.user.tokens = req.user.tokens.filter((token)=>{
      return token.token!==req.token // save every token that is not same as the one entered.
    })

    await req.user.save()
     res.send('Signed Out!')
}
catch(e){
    res.status(500).send(e)
}}

Маршрут файл route / auth. js

const express = require('express')
const router = express.Router()
const{usersign,signin,signout} = require('../controller/auth')
const requireSignin = require('../controller/authSign')

 //validators
const{runValidation} = require('../validators')
const{userSignUpValidator,userSignInValidator} = require('../validators/auth')

router.post('/user_sign',userSignUpValidator,runValidation,usersign)
router.post('/signin',userSignInValidator,runValidation,signin)
router.get('/signout',requireSignin,signout)


module.exports = router

Сервер. js file

const express = require('express')
const morgan = require('morgan')
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')
const cors = require('express')
require('dotenv').config()
const mongoose  = require('mongoose')
// bring in routes
const jobRouter = require('./routes/jobboard')
const authRouter = require('./routes/auth')
// const authCompanyRouter = require('./routes/authCompany.js')


// app
const app = express()

// database
mongoose.connect('mongodb://127.0.0.1:27017/xxxxxxxx', 
 {useNewUrlParser:true,useCreateIndex:true,useFindAndModify:false,useUnifiedTopology: 
true}).then(()=>console.log('Database Connected'))

//middlewares
app.use(morgan('dev'))
app.use(bodyParser.json())
app.use(cookieParser())

// CORS
if(process.env.NODE_ENV == 'development'){
app.use(cors({origin:`${process.env.CLIENT_URL}`}))
}



 // routes middleware

app.use('/api',jobRouter)
app.use('/api',authRouter)
//app.use('/api',authCompanyRouter)

// PORT
const port  = process.env.PORT || 8000

app.listen(port,()=>{
console.log(`Server is running on port ${port}`)
})

Это код ошибки, который появляется ; «Please Authenticate»

Будет очень признателен, если я смогу получить помощь вовремя, поскольку эта проблема израсходована в течение 4 рабочих дней. Спасибо, ребята

...