2017-10-05 3 views
0

J'essaie de faire en sorte que mon simulacre d'API (json-server) réponde d'une manière si le client a envoyé un AUTH_TOKEN dans les en-têtes de sa requête, et d'une autre manière s'il ne l'a pas fait. Ce code est ce que j'utilise, il vient des docs de json-server.Comment puis-je trouver les request.headers dans une requête json-server?

const jsonServer = require('json-server') 
const server = jsonServer.create() 
const router = jsonServer.router('db.json') 
const middlewares = jsonServer.defaults() 

server.use(middlewares) 
server.use((req, res, next) => { 
if (isAuthorized(req)) { // add your authorization logic here 
    next() // continue to JSON Server router 
} else { 
    res.sendStatus(401) 
} 
}) 
server.use(router) 
server.listen(3000,() => { 
    console.log('JSON Server is running') 
}) 

Bien sûr, cela fonctionne, à l'exception de la fonction isAuthorized(req) doit vérifier les en-têtes de demande. Ma fonction isAuthorized ressemble à ceci (pseudo).

const isAuthorized = (req) => { 
    return req.getHeader('AUTH_TOKEN') ? true : false; 
} 

Cela ne fonctionne pas, puisque le req n'a pas une méthode getHeader, mais mes intentions sont claires - je dois vérifier le jeton, si elle existe return true, sinon false.

Comment puis-je y parvenir?

req.headers renvoie les éléments suivants.

{ 
    host: 'localhost:3000', 
    map: '[object Object]', 
    'if-none-match': 'W/"a...........5r/3c"', 
    accept: 'application/json, text/plain, */*', 
    'user-agent': 'App/1 CFNetwork/887 Darwin/16.7.0', 
    'accept-language': 'en-us', 
    'accept-encoding': 'gzip, deflate', 
    connection: 'keep-alive' 
} 

Ce qui n'a vraiment rien à voir avec les en-têtes que j'envoie dans ma demande actuelle.

Répondre