简体   繁体   English

当我使用app.use时,Passport始终返回401

[英]Passport Always returns 401 when I use app.use

I've been trying to authenticate my routes using a custom strategy that are based in the `passport-http' Basic strategy. 我一直在尝试使用基于“ passport-http”基本策略的自定义策略对路由进行身份验证。 This is the code for my strategy. 这是我的策略代码。

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');

Using IIFE I register the name of my strategy. 使用IIFE,我注册了我的策略名称。 Then in the file app.js I invoke as following: 然后在文件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);

The userRouter contains a several routes. userRouter包含一些路由。 When I try to POST to /user/anything always return 401 code status. 当我尝试POST到/ user / anything时,总是返回401代码状态。

This Configuration is good? 这个配置好吗? In other module the same code working fine, but in this case I've spent to much hours trying to solving this. 在其他模块中,相同的代码可以正常工作,但是在这种情况下,我花了很多时间试图解决这个问题。

Solution The problem was that I wasn't sending the header for the authorization formed by: 'Basic' string + 'username : password' encoded in base 64. 解决方案问题是我没有发送由以下形式形成的授权的标头:“基本”字符串+“用户名:密码”以base 64编码。

In angular http response. 在角度http响应中。

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

credits to @Vadim answer in this post http://goo.gl/xkpCfN 归功于此帖子中的@Vadim答案http://goo.gl/xkpCfN

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM