gpt4 book ai didi

node.js - 在 Express 应用程序中,将 PassportJ 的本地策略放在哪里?

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:34 24 4
gpt4 key购买 nike

我有一个expressjs应用程序,我正在尝试设置passportjs以进行简单的用户身份验证。我的路线存储在单独的文件中。我有一个用于所有与用户相关的路线的路线文件(users.js)。我还有一个名为 UserController 的 Controller 文件,其中包含与用户相关的所有功能并处理我的数据库。

我的问题是,我应该在哪里声明通行证策略,以便它遵循 MVC 模式?

将其放入除路由文件之外的任何其他文件中都不起作用,因为它没有 Passport 对象。

最佳答案

我将 Passport 文件放在配置文件夹中。以下是 Passport.js 文件的示例。这是针对本地登录策略的。

module.exports = function(passport) {

passport.serializeUser(function(user, done) {
done(null, user.id);
}); // if you are using sessions

passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
}); // if you are using sessions

passport.use('local-login', new LocalStrategy({
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
// mongodb example - you have to query for user,
// check password, and return user if successful
User.findOne({ 'local.email' : email },
function(err, user) {
if (err) return done(err);

if (!user) return done(null, false);

if (!user.validPassword(password) {
return done(null, false);
}

else
return done(null, user); // all good return user
});
});
};

然后在 app.js 中我这样做:

require('./config/passport.js')(passport);


app.use(passport.initialize())

var usersRoutes = require('./server/routes/usersRoutes')(app, express, passport);
app.use('/users', usersRoutes);

然后在你的路由文件中:

module.exports = function(app, express, passport) {
var usersRouter = express.Router();

return usersRouter;

};

现在您的 Passport 功能可在您的 route 使用。我会在网络上搜索“easy-node-authentication”以获取好的示例。

关于node.js - 在 Express 应用程序中,将 PassportJ 的本地策略放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31594949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com