2015-10-14 56 views
0

我已經安裝了passportpassport-http。 我想讓我的NodeJS應用程序允許基本身份驗證,使用快遞。PassportJS使用BasicStrategy產生500次故障

我已經定義了用於測試目的以下驗證功能accessControl/users

var auth=function(user, callback){ 
    console.log("Checking Credentials for "+user) 
    if (user === 'chuck') { 
     var userObj = { name:'chuck' }; 
     userObj.validPassword = function(password) { 
      return (password === 'testa'); 
     } 
     callback(null, userObj); 
    } 
} 

這是我的快遞路線:

var express = require('express'); 
var users = require('../accessControl/users'); 
var passport = require('passport') 
    , BasicStrategy = require('passport-http').BasicStrategy; 

var router = express.Router(); 

passport.use(new BasicStrategy(
      function(username, password, done) { 
       users.auth({ username: username }, function (err, user) { 
        if (err) { return done(err); } 
        if (!user) { return done(null, false); } 
        if (!user.validPassword(password)) { return done(null, false); } 
        return done(null, user); 

       }); 

      } 

      )); 


router.get('/test', 
    passport.authenticate('basic',{session:true}), 
    function(req, res){ 
    //TODO 
    res.render('index'); 
}); 

訪問/test第一給了我一個瀏覽器登錄提示。 輸入chuck作爲用戶名和testa作爲密碼重定向到我的500錯誤頁面,儘管文件index.ejs存在於我的視圖文件夾中,並且在註釋掉passport.authenticate行時發送。 試圖通過app.js記錄產生的錯誤給了我{}

編輯: 我與

DEBUG=my-app node ./bin/www運行終端

EDIT2裏面的應用程序:

我得到以下輸出:

my-app Express server listening on port 3000 
GET /test 401 18,4333 ms -- 
GET /test 500 29,882 ms -- 1905 
+0

我假設第一個代碼片段駐留在'accessControl/users.js'並通過module.exports導出? –

+0

另外,重新記錄錯誤,你從哪裏運行應用程序?如果一個終端,你應該在那裏看到錯誤輸出。 –

+0

感謝這些提示。我編輯了這個問題。不幸的是,沒有輸出在與失敗相關的shell上完成。 – nesreka

回答

0

(這是要在黑暗中有點刺傷,因爲你沒有提供任何有關錯誤的細節......)

請問您是否設置了 session:true但尚未初始化會話中間件?嘗試設置 session:false

事實上,它看起來像問題源於這行代碼莖:

users.auth({ username: username }, function (err, user) { 

在上面行要傳遞的自定義對象authauth節選一個string對象。嘗試替換上面的行:

users.auth(username, function (err, user) { 
+0

非常感謝,但不幸的是,這並沒有解決500的故障。 – nesreka

+0

@nesreka當你用**特定的**錯誤更新了問題時,請對我進行Ping。 –

+0

不知何故,我無法得到任何錯誤輸出。發送err對象給出了{{}'和編輯後的shell輸出什麼也沒有說。 – nesreka