提问人:Madara's Ghost 提问时间:5/9/2015 最后编辑:Madara's Ghost 更新时间:5/9/2015 访问量:733
护照“Hello World”总是失败
Passport "Hello World" always fails
问:
我有以下几点:
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
- 函数体内的断点和 s 不会被命中。
console.log
- 用代替 true 调用不会改变任何事情。
done
done(null, {foo: "bar"})
值得一提的是
- 我正在使用 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"}));
这是我使用的表格(直接从护照示例中复制而来))
<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>
我不知道这里出了什么问题。将不胜感激任何帮助。
答:
评论
body-parser