Node / Express无法GET / api / auth / register

时间:2017-02-05 13:15:08

标签: node.js express post get ionic2

我的服务器路由出现问题,我在heroku上安装了服务器,但现在让它在本地进行调试, 在浏览器检查中我得到了

404 (Not Found)

在浏览器窗口中

  

无法GET / api / auth / register

我的server.js

var express  = require('express');
var app      = express();
var mongoose = require('mongoose');
var logger = require('morgan');
var bodyParser = require('body-parser');

var databaseConfig = require('./config/database');
var router = require('./app/routes');
//CORS middleware
var allowCrossDomain = function(req, res, next) {
    if ('OPTIONS' == req.method) {
      res.header('Access-Control-Allow-Origin', '*');
      res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS');
      res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
      res.sendStatus(200);
    }
    else {
      next();
    }
};

app.use(allowCrossDomain);

mongoose.connect(databaseConfig.url);

app.listen(process.env.PORT || 8080);
console.log("App listening on port 8080");
app.use(bodyParser.urlencoded({ extended: false })); // Parses urlencoded bodies
app.use(bodyParser.json()); // Send JSON responses
app.use(logger('dev')); // Log requests to API using morgan


router(app);

我的routes.js

var AuthenticationController = require('./controllers/authentication'),  
ExerciseController = require('./controllers/exercises'),  
express = require('express'),
passportService = require('../config/passport'),
passport = require('passport');

var requireAuth = passport.authenticate('jwt', {session: false}),
requireLogin = passport.authenticate('local', {session: false});

module.exports = function(app){

var apiRoutes = express.Router(),
    authRoutes = express.Router(),
    exerciseRoutes = express.Router();

// Auth Routes
apiRoutes.use('/auth', authRoutes);

//authRoutes.post('/register', AuthenticationController.register);
authRoutes.post('/register', function(req, res){
 AuthenticationController.registerUser
});
authRoutes.post('/login', requireLogin, AuthenticationController.login);

authRoutes.get('/protected', requireAuth, function(req, res){
    res.sendStatus({ content: 'Success'});
});

// Exercise Routes
apiRoutes.use('/exercises', exerciseRoutes);

exerciseRoutes.get('/', requireAuth, AuthenticationController.roleAuthorization(['client','trainer','admin']), ExerciseController.getExercises);
exerciseRoutes.post('/', requireAuth, AuthenticationController.roleAuthorization(['trainer','admin']), ExerciseController.createExercise);
exerciseRoutes.delete('/:exercise_id', requireAuth, AuthenticationController.roleAuthorization(['trainer','admin']), ExerciseController.deleteExercise);

// Set up routes
app.use('/api', apiRoutes);

}

我的Controller Authentication.js:

var jwt = require('jsonwebtoken');  
var User = require('../models/user');
var authConfig = require('../../config/auth');

function generateToken(user){
    return jwt.sign(user, authConfig.secret, {
        expiresIn: 10080
    });
}

function setUserInfo(request){
    return {
        _id: request._id,
        email: request.email,
        role: request.role,
        trainer: request.trainer,
        programs: request.programs
    };
}

exports.login = function(req, res, next){

    var userInfo = setUserInfo(req.user);
    console.log(userInfo)
    res.status(200).json({
        token: 'JWT ' + generateToken(userInfo),
        user: userInfo
    });


}

exports.registerUser = function(req, res, next){

    var email = req.body.email;
    var password = req.body.password;
    var role = req.body.role;
    var trainer = req.body.trainer;
    var programs= req.body.programs;

    if(!email){
        return res.status(422).send({error: 'You must enter an email address'});
    }

    if(!password){
        return res.status(422).send({error: 'You must enter a password'});
    }

    User.findOne({email: email}, function(err, existingUser){

        if(err){
            return next(err);
        }

        if(existingUser){
            return res.status(422).send({error: 'That email address is already in use'});
        }

        var user = new User({
            email: email,
            password: password,
            role: role,
            trainer: trainer,
            programs: programs
        });

        user.save(function(err, user){

            if(err){
                return next(err);
            }

            var userInfo = setUserInfo(user);

            res.status(201).json({
                token: 'JWT ' + generateToken(userInfo),
                user: userInfo
            })

        });

    });

}

exports.roleAuthorization = function(roles){

    return function(req, res, next){

        var user = req.user;

        User.findById(user._id, function(err, foundUser){

            if(err){
                res.status(422).json({error: 'No user found.'});
                return next(err);
            }

            if(roles.indexOf(foundUser.role) > -1){
                return next();
            }

            res.status(401).json({error: 'You are not authorized to view this content'});
            return next('Unauthorized');

        });

    }

}

我没有很多关于快递/节点的经验所以我不知道我哪里出错,可能是简单的事情,我只是无法看到,无论如何任何帮助都非常感激,不确定你是否需要更多的信息,这是去成为离子2 app的后端

0 个答案:

没有答案