执行passport.authenticate时,在发布时显示为未经授权的404

时间:2017-05-16 10:47:23

标签: angularjs node.js express passport.js passport-local

文件router.js包含使用的路由器。

在ionic2中,提供程序使用post方法,将uri设为http://localhost:8080/api/auth/login,在调试工具中出现400错误请求错误。

我发现when I remove requireLogin then the post is working fine.But I need requireLogin`用于验证本地护照登录。

router.js

//require the passport strategy from the folder in the project.
  var passport = require('passport');
  var x = require('./usefile/file');

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

module.exports = function(app){

var auth = express.Router();

app.use('/api/auth', auth);

auth.post('/login', requireLogin, function(req, res){
     x.login(req, res)});
}

passport.js

var passport = require('passport');
var JwtStrategy = require('passport-jwt').Strategy;
var ExtractJwt = require('passport-jwt').ExtractJwt;
var LocalStrategy = require('passport-local').Strategy;
var config = require('./auth');
var User = require('../models/user');

var localOptions = {
    usernameField: 'email',
};

var localLogin = new LocalStrategy(localOptions, function (email, password, done) {
    User.find(
        { email: email }, function (err, user) {
            if (err) {
                return done(err);
            }
            if (!user) {
                return done(null, false, { error: 'Login failed,Please try again.' });
            }
            if (!isMatch) {
                return done(null, false, { error: 'Login failed, Please try again.' });
            }
            user.comparePassword(function(password, isMatch){
                if(err){
                    return done(err);
                }
                if(!isMatch){
                    return done(null, false, {error:'Login failed, Please try again.'});
                }
                return done(null, user);
            });
        });
});
passport.use(localLogin);

注意 :我的代码没有使用用于通过护照进行身份验证的requireLogin,因此显示400错误的请求错误。

请帮助。

1 个答案:

答案 0 :(得分:0)

你需要当地的护照档案吗?您似乎需要npm护照模块,而不是您的本地文件。

您应该将router.js中的第一行代码更改为

//require the passport strategy from the folder in the project.
var passport = require('./passport');//<--change this line
var x = require('./usefile/file');

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

module.exports = function(app){

var auth = express.Router();

app.use('/api/auth', auth);

auth.post('/login', requireLogin, function(req, res){
     x.login(req, res)});
}

让我知道这是怎么回事。