403 запрещенных экспресс-бэкэнда - PullRequest
0 голосов
/ 04 ноября 2019
GET http://localhost:5000/booksIdea/show 403 (Forbidden)

я проверяю токен на веб-сайте https://jwt.io/ я получил недопустимую подпись, поэтому я догадываюсь, почему возникла проблема, но я игнорирую, как ее исправить, я искал эту ошибку, и вот что я нашел:При получении ответа 403 сервер говорит вам: «Извините. Я знаю, кто вы, я верю, кем вы себя называете, но у вас просто нет разрешения на доступ к этому ресурсу. Может быть, если вы спросите системного администратора, вы получите разрешение. Но, пожалуйста, не беспокойте меня снова, пока ваше затруднительное положение не изменится. ”

Функция API GET на внешнем интерфейсе:

import axios from 'axios'

export const ShowBooks = () => {
    let token = localStorage.getItem("usertoken")

    return axios.get("http://localhost:5000/booksIdea/show", {
        headers: {
          Authorization: `Bearer ${token}`, //here remove + in template litereal
        },
      })
      .then(res => {
          console.log("Success")
      })
      .catch(error => {
        console.log(error)
      })

}

backend app.js

const express = require('express')
var cookieParser = require('cookie-parser')
const app = express()
var cors = require('cors')
var bodyParser = require('body-parser')
const port = 5000
const routes = require("./routes");
const con = require('./db')
var cors = require('cors')
app.use(cors())
// database connect 

con.connect(function(err) {
    if (err) throw err;
    console.log("Connected!");
  });

  //cookie 
  app.use(cookieParser())
//routes
// support parsing of application/json type post data
app.use(bodyParser.json());

//support parsing of application/x-www-form-urlencoded post data
app.use(bodyParser.urlencoded({ extended: true }));

app.use("/", routes);


app.listen(port, () => console.log(`Example app listening on port ${port}!`))

вот маршруты

var express = require('express')
var router = express.Router()
var Controller = require('./controller')
var authController = require('./authController')
var BooksIdeaController = require('./BooksIdeaController')
router.post('/register',Controller.register);
router.post('/login',authController.login);
router.post('/booksIdea/:id',authController.verify,BooksIdeaController.addComment)
router.post('/booksIdea/addbook',authController.verify,BooksIdeaController.addBookIdea)
router.get('/booksIdea/show',authController.verify,BooksIdeaController.showBookIdea)
router.put('/booksIdea/edit/:id',authController.verify,BooksIdeaController.UpdateBookIdea)
router.delete('/booksIdea/delete/:id',authController.verify,BooksIdeaController.DeleteBookIdea)
module.exports = router;

authController

const con = require('./db');
var bcrypt = require('bcrypt');
let jwt = require('jsonwebtoken');
const express = require('express')
var cookieParser = require('cookie-parser')
const app = express()
module.exports.login=function(req,res){
    var username=req.body.name;
    var password=req.body.password;
    con.query('SELECT * FROM users WHERE username = ?',[username], function (error, results, fields) {
      if (error) {
          res.json({
            status:false,
            message:'there are some error with query'
            })
      }else{
        if(results.length >0){
          bcrypt.compare(password, results[0].password, function (err, result) {
            if (result == true) {
        jwt.sign({user:results},'configSecret',(err,token)=>{
          res.json({
            token:token
          })


        });



            //   res.json({
            //     status:true,
            //     message:'successfully authenticated'
            // })
            } else {
              res.json({
                      status:false,
                      message:"username and password does not match"
                     });
            }
          });
        }
        else{
          res.json({
              status:false,    
            message:"username does not exits"
          });
        }
      }
    });
}

module.exports.home=function(req,res){
res.send('hello');
}
//////
// if(password==results[0].password){

  // }else{
  //    
  // }
  module.exports.verify = function verifyToken(req, res, next) {
    // Get auth header value
    const bearerHeader = req.headers['authorization'];
    // Check if bearer is undefined
    if(typeof bearerHeader !== 'undefined') {
      // Split at the space
      const bearer = bearerHeader.split(' ');
      // Get token from array
      const bearerToken = bearer[1];
      // Set the token
      req.token = bearerToken;
      // Next middleware
      next();
    } else {
      // Forbidden
      res.sendStatus(403);
    }

  }

Как я могу исправить эту ошибку? заранее благодарю за помощь

1 Ответ

0 голосов
/ 04 ноября 2019

Проверьте ваше локальное хранилище localStorage.getItem("usertoken")

Ваш токен может быть:

  1. отсутствует или не определен

  2. неверный токен -вероятно опечатка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...