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

相关问题