gpt4 book ai didi

javascript - Passport "Hello World"总是失败

转载 作者:搜寻专家 更新时间:2023-10-31 23:42:22 24 4
gpt4 key购买 nike

我有以下内容:

import {Router} from 'express';
import passport from 'passport';
import {Strategy} from 'passport-local';
import pg from 'pg';
import {pgUri} from '../environment';

let loginRouter = Router();

passport.use(new Strategy((username, password, done) => done(null, true)));
//{
// pg.connectAsync(pgUri)
// .then(([client, release]) => {
// return client.queryAsync('select * from users where "user" = $1::TEXT', [username])
// .finally(release);
// })
// .tap(result => console.log(result.rows))
// .then(result => done(null, true));
//}));

loginRouter.get('/', (request, response) => response.render('login'));
loginRouter.post('/', passport.authenticate('local', {successRedirect: '/',
failureRedirect: '/login'}));

export default loginRouter;

这是一个快速路由文件,定义了最简单的身份验证方案。上面总是重定向回/login,表示失败。

我尝试过的

  • failureRedirect 更改为 /loginFailed 确实会重定向到那里。所以登录确实失败了。
  • 函数体内的断点和 console.log 不会被命中。
  • done(null, {foo: "bar"}) 而不是 true 调用 done 没有任何改变。

值得注意

  • 我正在使用 babel 来支持 ES6,但由于这是唯一失败的部分,而且我可以设置的断点(在 passport.use 之前)显示所有变量的预期值,所以我不不认为这是问题所在。
  • .get() 路由按预期工作,显示表单。

我在引导阶段有这个:

app.use(session({
secret: "some-secret",
resave: true,
saveUninitialized: true
}));

app.use(passport.initialize());
app.use(passport.session());

passport.serializeUser((user, done) => done(null, {foo: "bar"}));

passport.deserializeUser((user, done) => done(null, {foo: "bar"}));

这是我正在使用的表格(直接从 passport example 复制)

<form action="/login" method="post">
<div>
<label>Username:</label>
<input type="text" name="username"/>
</div>
<div>
<label>Password:</label>
<input type="password" name="password"/>
</div>
<div>
<input type="submit" value="Log In"/>
</div>
</form>

我不知道这里出了什么问题。非常感谢任何帮助。

最佳答案

您需要使用一些东西来解析 POST 正文。

Passport 旨在完成一件事:验证请求。它将所有其他功能(包括解析 POST 正文)委托(delegate)给应用程序。他们在 overview 中这样说,但很容易低估其影响。

他们回到了他们 Configure中间件 部分的主题。页面,所以我建议阅读。

我恰好使用 body-parser 模块来处理这个(阅读 here)。

关于javascript - Passport "Hello World"总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139944/

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