护照:未知身份验证策略“本地”

非营利组织

我是NodeJS的新手,我尝试构建一个登录/注册系统。注册工作正常,但我目前无法登录。

我找到了使用passport和nodejs的示例应用程序,因此基于此示例,我构建了注册表单和登录表单。http://blog.robertonodi.me/node-authentication-series-email-and-password/

当我尝试登录时,我得到一个'Unknown authentication strategy "local" error'谁能解释我在做什么错?

我的密码

(编辑:添加了对答案/评论和文件名的一些更改)

快速配置(config / express.config.js)

app.use(session({
    store: new MongoStore({
        url: 'mongodb://' + config.url + ':' + config.port + '/' + config.name
    }),
    secret: 'secretkey',
    key: 'skey.sid',
    resave: false,
    saveUninitialized: false,
    cookie : {
        maxAge: 604800000 //7 days in miliseconds
    }
}));

app.use(passport.initialize());
app.use(passport.session());
require(path.join(__dirname, 'auth.config'))(passport); //Load passport config

app.use(function(req, res, next) {
    req.resources = req.resources || {};
   // res.locals.app = config.app;
    res.locals.currentUser = req.user;
    res.locals._t = function (value) { return value; };
    res.locals._s = function (obj) { return JSON.stringify(obj); };
    next();
})

护照配置(config / auth.config.js)

var path = require('path');

var passport=require('passport');
var User = require(path.join(__dirname, '..', 'models', 'user.model'));

module.exports = function(passport) {

    passport.serializeUser(function(user, done){
        done(null, false);
    });
    passport.deserializeUser(function(id, done){
        console.log("deserializeUser called", id);
        User.findById(id, function (err, user) {
            done(err, user);
        });
    });

    //load strategy files
    require(path.join(__dirname, 'strategies', 'local-strategy'));
    //TODO: Facebook
    //TODO: Twitter
    //TODO: Google
}

本地策略(/config/strategies/local-strategy.js)

var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var User = mongoose.model('User');

module.exports = function () {
    console.log("LocalStrategy called");
    passport.use(new LocalStrategy({
        usernameField : 'username',
        passwordField : 'password'
    },
    function(username, password, done) {
        User.authenticate(username, password, function(err, user) {
            if (err) {
                return done(err);
            }

            if(!user) {
                return done(null, false, {message: 'Invalid username or password'});
            }

            return done(null, user);
        })
    }))
}

身份验证控制器(仅登录)(/controllers/auth.controller.js)

module.exports.loginUser = function(req,res, next) {
    console.log("Auth.config", path.join(__dirname, 'strategies', 'local-strategy'))
   passport.authenticate('local', function (err, user, info) {
       if (err || !user) {
           console.log("Error", info);
           return res.status(400).send(info);
       }

       req.logIn(user, function(err) {
           if (err) {
              return next(err);
              // return res.status(404).send("Username or password incorrect");
           }
       })

       res.status(200).json(user);
   })(req, res, next);
}
拉维·香卡·巴尔蒂(Ravi Shankar Bharti)

您忘记在中导入护照配置文件app.js

import passport config初始化之后passport

app.use(passport.initialize());
app.use(passport.session());
// Add the line below, which you're missing:
require('./path/to/passport/config/file')(passport);

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

手动拨打护照进行身份验证

未知身份验证策略护照

在客户端获取令牌以进行护照本地身份验证

节点+护照,错误:身份验证策略必须具有名称

使用什么身份验证策略?

收到“错误”:“未知身份验证策略“ jwt””

如何获取护照。使用异步/等待模式验证本地策略

未知身份验证策略“本地”

护照身份验证卡在控制器中?

laravel护照api身份验证

Laravel护照在生产中返回未经身份验证但可在本地主机上工作

在Laravel上使用护照包时身份验证错误

Next.js身份验证策略

如何使用护照对React应用进行身份验证?

找不到“获取列”:1054 laravel护照身份验证的“ where子句”中的未知列“”

对身份验证技术的怀疑-护照

基于令牌的身份验证与JWT还是护照laravel?

NodeJS Passport本地策略通知客户端用户已通过身份验证

错误:未知的身份验证策略“ [对象对象]”

未知身份验证Facebook策略-PassportJS

本地护照和本地猫鼬的身份验证错误

护照错误“未经身份验证”

Express 身份验证和护照身份验证

护照 未知的身份验证策略“本地”、“脸书”、“谷歌”

节点 Passport-azure-ad 错误:“未知的身份验证策略“oauth-bearer””

未知的身份验证策略“github”

正确的 API 身份验证策略

使用本地护照时如何判断客户端是否通过身份验证?

Laravel 护照未经身份验证的消息