Nodejs:Passport-local vs custom user auth

时间:2015-11-26 09:42:23

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

我对Nodejs / ExpressJS相当新,但我在ROR的Web后端开发方面有足够的经验。

我使用本地护照在Node / Express中创建了一个小型Web应用程序。因为我使用的是Mongodb,所以甚至还有一个插件https://github.com/saintedlama/passport-local-mongoose。我用过这个。

var User = new Schema({
    username: String,
    password: String,
});

我能够注册/登录/注销。所以一个基本的应用程序正在运作。

现在我的问题是,如果我只有local身份验证方法,那么使用护照就好了。(不需要社交登录)。 这意味着仅使用express and mongoose进行身份验证,不需要额外的插件。

如果是,我怎么才能使用这些,任何来源或提示进行身份验证?

如果我必须使用护照(或者你推荐护照,因为这支持认证中间件,我虽然不确定),我怎么能忽略passport-local-mongoose来创建用户模型和使用护照和快递认证。

1 个答案:

答案 0 :(得分:1)

您可以为护照编写自己的身份验证处理程序,该处理程序与包含您登录信息的任何来源相关联。

// And this handler to your local strategy initialization
var localStrategyHandler = function (email, password, done) {

    // Here you can write any function which validates the email and password against the storage yo've used
    Accounts.getAccount(username, password).then(function (account) {
        if (account !== null) {
            return done(null, account); // If login attempt was successfull return a user object using the done callback
        } else {
            return done(null, false, 'ACCOUNT_NOT_FOUND'); // If login failed return a failure like this example
        }
    }).catch(function (error) {
        return done('LOGIN_ERROR');
    });
};

 // Thats how you initilize a strategyHandler
 passport.use(new LocalStrategy(localStrategyHandler));

函数done是触发护照进一步行为的回调方法。