2016-07-19 3 views
0

の代わりにエラーを与えるアプリクロム郵便配達いくつかのいずれかがここでの問題を見つけるために私を助けてください: requester.js:6211 POST http://localhost:7000/api/login 403 (Forbidden)send @ requester.js:6211(anonymous function) @ requester.js:4811dispatch @ jquery.min.js:3i @ jquery.min.js:3 requester.js:1056 Defining mode`特急 - 常に応答

私は私のusernamepasswordを投稿しようとしているとき、私はいつものようにエラーを取得しています

ここでは何が問題なのか分かりません。

var User = require('../models/user'); 
var config = require('../../config'); 

var secretKey = config.secretKey; 

var jsonwebtoken = require("jsonwebtoken"); 


function createToken (user) { 

    var token = jsonwebtoken.sign({ 
     _id : user.id, 
     name : user.name, 
     username: user.username 
    }, secretKey, { 
     expiresIn : "1440m" 
    }) 

    return token; 
} 

module.exports = function(app, express) { 

    var api = express.Router(); 

    api.post('/signup', function(req, res) { 

     var user = new User({ 
      name : req.body.name, 
      username : req.body.username, 
      password : req.body.password 
     }); 

     user.save(function(err) { 
      if(err) { 

       res.send(err); 
       return; 

      } 

      res.json({message : "User has been created!"}); 
     }); 

     api.get('/users', function(req, res) { 

      User.find({}, function(err, users) { 

       if(err) { 
        res.send(err); 
        return; 
       } 

       res.json(users); 

      }) 

     }); 

     api.post('/login', function(req, res) { 

      User.findOne({ 
       username : req.body.username 
      }).select('password').exec(function(err, user) { 

       if(err) throw err; 

       if(!user) { 
        res.send({ message : "User doesnt Exist!"}) 
       } else if(user) { 

        var validPassword = user.comparePassword(req.body.password); 

        if(!validPassword) { 
         res.send({ message : "Invalid Password"}); 
        } else { 

         var token = createToken(user); 

         res.json({ 
          success : true, 
          message : "Successfuly loged In!", 
          token : token 
         }) 

        } 
       } 

      }) 

     }) 

    }); 

    //middleware 

    api.use(function(req, res, next) { 


     console.log("Somebody just came to our app!"); 

     var token = req.body.token || req.param('token') || req.headers['x-access-token']; 

     // check if token exist 
     if(token) { 

      jsonwebtoken.verify(token, secretKey, function(err, decoded) { 

       if(err) { 
        res.status(403).send({ success: false, message: "Failed to authenticate user"}); 

       } else { 
        req.decoded = decoded; 
        next(); 
       } 
      }); 
     } else { 
      res.status(403).send({ success: false, message: "No Token Provided"}); 
     } 

    }); 

    //Destination B 

    api.get("/", function(req, res) { 

     res.json("Hello World!"); 

    }) 

    return api; 

} 
+0

あなたはポストのサインアップコールバックからのGETとPOSTを取る必要があります。また、ルートは/ api/loginでなく、/ loginでなければなりません。 –

+0

「ポストサインアップコールバックから取得して投稿する必要があります。 – 3gwebtrain

+0

api.get( '/ users' ...コールバックの中にあります。エクスポートされた関数に直接入ります。 –

答えて

2

ルートは 'API /サインアップ' とだけでなく、 '/サインアップ' する必要があります:

enter image description here

はここに私のAPIファイルです: は、ここではポストマン依頼スクリーンショットです。

ルート定義が正しくありません。代わりに:

api.post('/signup', function(req, res) { 
... 
     api.get('/users', function(req, res) { 
    }) 
}) 

それは次のようになります。

api.post('/signup', function(req, res) { 
... 
}) 
api.get('/users', function(req, res) { 
... 
}) 
関連する問題