Node.js 快速通行证谷歌&x2B;自定义身份验证
我有一个express应用程序,使用passportjs管理身份验证 目前,我只想在我的应用程序中支持使用谷歌登录。我已经正确地执行了这一点,并且工作得很好。现在,我想将对应用程序的访问限制为仅向该应用程序注册的用户 注册是由管理员完成的,因此只能有少数用户注册。目前,任何拥有谷歌账户的人都可以登录到该应用程序。与此相反,我希望使用OAuth2.0与google进行身份验证,并且在允许用户登录到系统之前,我希望检查我的数据库中是否存在该用户 更新 以下是我的代码Node.js 快速通行证谷歌&x2B;自定义身份验证,node.js,oauth-2.0,passport.js,Node.js,Oauth 2.0,Passport.js,我有一个express应用程序,使用passportjs管理身份验证 目前,我只想在我的应用程序中支持使用谷歌登录。我已经正确地执行了这一点,并且工作得很好。现在,我想将对应用程序的访问限制为仅向该应用程序注册的用户 注册是由管理员完成的,因此只能有少数用户注册。目前,任何拥有谷歌账户的人都可以登录到该应用程序。与此相反,我希望使用OAuth2.0与google进行身份验证,并且在允许用户登录到系统之前,我希望检查我的数据库中是否存在该用户 更新 以下是我的代码 var passport = r
var passport = require('passport');
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var config = require('./config');
var directoryService = require('./services/directory');
/**
* Authentication configuration
*/
module.exports = function (app, router) {
passport.serializeUser(function (user, done) {
//I want to know if this is the correct process
directoryService.findResidentByEmailAddress(user.emails[0].value).then(function (data) {
if (data == null || data.length == 0) {
done({ 'status': 'Invalid Login' });
} else {
done(null, data);
}
});
});
passport.deserializeUser(function (obj, done) {
done(null, obj);
});
passport.use(new GoogleStrategy({
clientID: config.auth.clientID,
clientSecret: config.auth.clientSecret,
callbackURL: config.auth.callbackURL,
passReqToCallback: true
},
function (request, accessToken, refreshToken, profile, done) {
process.nextTick(function () {
return done(null, profile);
});
}
));
app.use(passport.initialize());
app.use(passport.session());
router.use(function (req, res, next) {
if (req.isAuthenticated() || req.url.startsWith('/auth/')) {
return next();
}
res.redirect('/auth/login.html');
});
router.get('/auth/google',
passport.authenticate('google', { scope: ['email'] }));
router.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function (req, res) {
res.redirect('/');
});
router.get('/logout', function (req, res) {
req.logout();
res.redirect('/auth/login.html');
});
}
发布您的代码以便我们能够提供帮助。发布一些东西以便我们能够更好地帮助您,我们不会为您编写完整的代码。我不是在寻找代码。。我在寻找如何做这件事的想法。。我会在某个时间发布代码。。但它与passportjs文档站点上的内容完全相同。。正如我提到的,我的代码没有任何问题。。我想添加更多功能,并寻求建议。。