将 PassportJs 本地策略放在快递应用程序的什么位置?
Where to put PassportJs local strategy in an express application?
我有一个 expressjs 应用程序,我正在尝试为简单的用户身份验证设置 passportjs。我的路线存储在一个单独的文件中。我的所有用户相关路线都有一个路线文件 (users.js)。我还有一个名为 UserController 的控制器文件,其中包含与用户相关的所有功能并处理我的数据库。
我的问题是,我应该在哪里声明 passport 策略以使其遵循 MVC 模式?
将它放在路由文件之外的任何其他文件中都不起作用,因为它没有护照对象。
我将护照文件放在配置文件夹中。这是 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;
};
现在您的护照功能在您的路线中可用。我会在网上搜索 'easy-node-authentication' 寻找好的例子。
我有一个 expressjs 应用程序,我正在尝试为简单的用户身份验证设置 passportjs。我的路线存储在一个单独的文件中。我的所有用户相关路线都有一个路线文件 (users.js)。我还有一个名为 UserController 的控制器文件,其中包含与用户相关的所有功能并处理我的数据库。
我的问题是,我应该在哪里声明 passport 策略以使其遵循 MVC 模式?
将它放在路由文件之外的任何其他文件中都不起作用,因为它没有护照对象。
我将护照文件放在配置文件夹中。这是 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;
};
现在您的护照功能在您的路线中可用。我会在网上搜索 'easy-node-authentication' 寻找好的例子。