2015-10-25 52 views
0

我對Node.js很陌生,我試圖通過外部CAS服務器實現一個認證系統。我使用Passport.js + passport-cas2,但它始終將我重定向到failureRedirect頁面,即使CAS正確認證了我。這裏是我的代碼:Passport-cas2總是重定向到failureRedirect

var SocketIOFileUpload = require('socketio-file-upload'), 
    socketio   = require('socket.io'), 
    express   = require('express'), 
    path    = require('path'), 
    express   = require('express'), 
    passport   = require('passport'), 
    session   = require('express-session'), 
    bodyParser   = require('body-parser'); 

var CasStrategy = require('passport-cas2').Strategy; 
var cas = new CasStrategy({ 
     casURL: 'https://my.cas.server' 
    }, 
    function(username, profile, done) { 
     console.log("authenticating"); 
     done(null, new User()); 
}); 

var app = express() 
    .use(bodyParser.urlencoded({ extended: true })) 
    .use(SocketIOFileUpload.router) 
    .use(passport.initialize()); 
passport.use(cas); 
app.use(session({ secret: 'my secret phrase' })) 
    .use(passport.session()) 
    .get('/', function(req, res){ 
     res.redirect('/auth/cas'); 
    }) 
    .get('/auth/cas', 
     passport.authenticate('cas', { failureRedirect: '/error', successRedirect: '/upload' }), 
     function(req, res) { 
     // Successful. 
     res.redirect('/upload'); 
    }) 
    .use('/upload', function(req, res, next){ 
     if (req.user) 
      return express.static(path.join(__dirname, 'html')); 
     else 
      res.redirect('/auth/cas'); 
    }) 
    .get('/error', function(req, res) { 
     res.send('Error in authentication. Please <a href="/auth/cas">Try Again</a>.'); 
    }) 
    .listen(8080, function() { 
    console.log('Upload Server started on http://localhost:8080'); 
    }); 

console.log("authenticating")甚至沒有執行!

感謝您的幫助。

回答

0

好的,我修好了,我的CAS服務器認證是自簽名的,我必須編輯passport-cas2來源才能接受證書。

相關問題