0

Я пытался аутентифицировать свои маршруты, используя специальную стратегию, основанную в базовой стратегии «pass-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/anything, всегда возвращайте статус кода 401.

Эта конфигурация хороша? В другом модуле тот же код работает нормально, но в этом случае я потратил много часов, пытаясь решить это.

+0

спасибо, я буду править прямо сейчас. –

ответ

1

Решение Проблема заключалась в том, что я не отправлял заголовок для авторизации, образованную: «Basic» строка «+ имя пользователя: пароль» закодированной в базе 64.

В угловом ответ HTTP.

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

кредиты @Vadim ответ на этот пост http://goo.gl/xkpCfN

Смежные вопросы