簡體   English   中英

使用谷歌應用程序電子郵件ID的passportjs身份驗證

[英]passportjs authentication using google apps email id

我正在嘗試使用谷歌應用程序電子郵件ID的護照js。 我可以使用gmail.com電子郵件ID進行身份驗證。 但是,如果電子郵件ID是谷歌應用程序ID(google.com/a/companyname.com),我該如何進行身份驗證。

這是我的代碼

var express = require('express');
var app = express();
var passport = require('passport');
var GoogleStrategy = require('passport-google').Strategy;

passport.use(new GoogleStrategy({
    returnURL: 'http://10.3.0.52:3000/auth/google/return',
    realm: 'http://10.3.0.52:3000/'
},
function(identifier, profile, done) {
    User.findOrCreate({
        openId: identifier
    }, function(err, user) {
        done(err, user);
    });
}
));

app.get('/auth/google', passport.authenticate('google'));

app.get('/auth/google/return', 
    passport.authenticate('google', {
        successRedirect: '/',
        failureRedirect: '/login'
    }));

app.get('/', function(req, res){
    res.writeHead(200);

    res.end("connected");

});

app.listen(process.env.PORT || 3000);

您的代碼缺少一些重要部分:

...
passport.use(...); // this you have

// these are required as well.
app.use(passport.initialize());
app.use(passport.session());

// please read docs for the following two calls
passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});
...

有了這些,我可以使用我的Google App地址登錄。

編輯:它只適用於Node 0.8,但節點0.10給出錯誤。 我認為使用passport-google-oauth無論如何都是更好的解決方案。 為此,您必須向Google注冊您的申請( 此處 ); 注冊后,您將獲得可以使用的GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET代碼。

我創建了一個方法來驗證電子郵件域是否是我想要授權的域:

UserSchema.method('checkFordomain', function(value) {
    var parts = value.split('@');
    return (parts[1] == 'companyname.com');
});

這是我在用戶模型的模型中使用mongoose模式模型的方法

if (!user.checkForMMdomain(profile.emails[0].value)) {
    return done();
}

在護照google策略的回調中https://github.com/jaredhanson/passport-google-oauth

在您的passport.use回調中,您可以根據主電子郵件地址的域(或您正在檢查的任何內容)執行其他檢查:

if (profile.emails[0].split('@')[1] !== authorizedDomain) {
    return done(null, false);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM