当我使用app.use时,Passport总是返回401
Passport Always returns 401 when I use app.use
我一直在尝试使用基于"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代码状态。
这个配置好吗?在其他模块中,同样的代码运行良好,但在这种情况下,我花了很多时间试图解决这个问题。
解决方案问题是,我没有发送由"Basic"字符串+"username:password"组成的授权标头,该字符串编码在base64中。
在角度http响应中。
$http({
url: serverUrl,
method: 'POST',
headers: {'authorization': 'Basic ' + new Buffer(username + ':' + password).toString('base64');},
data: fields
})
感谢@Vadim在这篇文章中的回答http://goo.gl/xkpCfN
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 访问Passport'React(ES6)中的用户需求?API调用将req.user返回为未定义
- Passport local使用Angular返回错误400错误请求
- 当我使用app.use时,Passport总是返回401
- passport req.isAuthenticated()总是返回fasle
- Nodejs - Passport认证总是返回失败重定向
- Passport.js:用Github登录并返回电子邮件地址
- 当Passport.js认证失败时,返回一个JSON响应