0

我一直在嘗試使用基於`passport-http'基本策略的自定義策略來驗證我的路線。這是我的戰略的代碼。護照總是返回401時,我使用app.use

passport_auth.js

var BasicStrategy = require('passport-http').BasicStrategy; 

module.exports.userBasic = (function(name){ 
    var userAuthBasic = new BasicStrategy(
    function(username, password, done) { 

     //My strategy 
    } 
); 
    userAuthBasic.name = name; 
    return userAuthBasic; 
})('userBasic'); 

使用IIFE註冊我的策略的名稱。那麼該文件app.js在我引用如下:

app.js

var express = require('express'); 
var bodyParser = require('body-parser'); 
var passport = require('passport'); 
var userRouter = require(__dirname+'/http/routers/user_router.js'); 
const cors = require('cors')(); 
var passportAuth = require(__dirname + '/http/passport_auth'); //My file with my strategy 

//Adds to passport my strategy 
passport.use(passportAuth.userBasic); 

var app = express(); 
app.use(cors); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(passport.initialize()); 


app.use('/user', passport.authenticate('userBasic', { session: false }), userRouter); 

userRouter包含幾條航線。當我嘗試POST到/ user /任何東西時總是返回401代碼狀態。

這個配置好嗎?在其他模塊中,相同的代碼工作正常,但在這種情況下,我花了很多時間試圖解決這個問題。

+0

感謝,我現在將編輯。 –

回答

1

的問題是,我是不發送由形成爲授權的標題:「基本」串+「用戶名:密碼」在底部64

在角http響應編碼。

$http({ 
       url: serverUrl, 
       method: 'POST', 
       headers: {'authorization': 'Basic ' + new Buffer(username + ':' + password).toString('base64');}, 
       data: fields 
      }) 

學分@Vadim答案在這個崗位http://goo.gl/xkpCfN

相關問題