javascript - 当我使用 app.use 时 Passport 总是返回 401

标签 javascript node.js express http-status-code-401 passport.js

我一直在尝试使用基于“passport-http”基本策略的自定义策略来验证我的路由。这是我的策略的代码。

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 代码状态。

这个配置好不好?在其他模块中,相同的代码工作正常,但在这种情况下,我花了很多时间试图解决这个问题。

最佳答案

解决方案 问题是我没有发送由以下内容组成的授权 header :“基本”字符串 + 以 Base 64 编码的“用户名:密码”。

以 Angular http 响应。

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

感谢 @Vadim 在这篇文章中的回答 http://goo.gl/xkpCfN

关于javascript - 当我使用 app.use 时 Passport 总是返回 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633877/

相关文章:

javascript - HTML5 + JAVASCRIPT 使用文件的前 4 个字节进行异步表单验证

javascript - while 循环的问题

javascript - 将 nodejs/express 应用程序中的 json 文件加载到 d3

javascript - 如果条件触发这两种情况,为什么要选择其中之一? (JavaScript

javascript - 如何在php中实现 “show sub-checkbox”?

javascript - 在JS中正确使用typeof运算符?

javascript - Node.js:启动 pg.Pool()

image - nodejs - 如何将文件中的图像数据添加到 Canvas 中

javascript - 当另一个用户已经注册了相同的电子邮件时,如何在 Put(更新)方法中进行电子邮件重复检查?

node.js - 接收 wav 文件并将其写入 Node/Express Server 上的磁盘