gpt4 book ai didi

node.js - Passport-http 错误请求

转载 作者:搜寻专家 更新时间:2023-11-01 00:07:14 27 4
gpt4 key购买 nike

我想使用 passport-http (DigestStrategy) 进行简单的身份验证。它看起来像:

var DigestStrategy = require('passport-http').DigestStrategy;

passport.use('login', new DigestStrategy({ qop: 'auth' },
function(login, password, done) {
User.findOne({ login: login }, function(err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
user.matchPassword(password, function(err, isMatch) {
if (!isMatch)
{
return done(null, false);
}
return done(null, user);
})
});
}
));

在 POST/login 中

router.post('/',
passport.authenticate('login', {session: false}),
function(req, res) {
if (req.user)
{
var expires = moment().add('hours', 1).valueOf();

res.json({
expires: expires,
user: req.user.toJSON()
});
}
else
{
console.log("send 401 ...");
res.sendStatus(401);
}
});

我以 http 形式插入凭据

div.loginbox
form(name='login', action='/login', method='post')
label(value='login')
input(type='text', name='login')

label(value='password')
input(type='password', name='password')

input(type='submit', value='Login')

但在那之后,我只收到 400 Bad Request。

最佳答案

实际上,您通过将表单数据作为凭据发布,将一些 HTTP 身份验证与自定义身份验证混合在一起。

通过使用 HTML 表单发布凭据,没有隐式的 HTTP 摘要身份验证。您需要发送一些特殊的 header 来启动任何 HTTP 身份验证。您可以在那里选择基本摘要 身份验证。这导致浏览器提示用户输入名称和密码,从而产生特殊的 HTTP header ,然后由所选的 DigestStrategy 管理。 Bad Request was issued for HTTP header 实际上缺少执行身份验证所需的 header 信息。

如果您想使用表单登录,您可能想使用本地 Passport 的 LocalStrategy,或者可能使用 AJAX 自己管理客户端摘要身份验证,但我会坚持使用前者。

关于node.js - Passport-http 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31230927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com