(使用序列化函数更新了代码 - 仍然重定向到 /failedRedirect)
我试图使用护照包进行简单的用户名/密码身份验证,但失败了。在下面的示例中,我尝试通过基本上始终返回有效的身份验证(无论通过什么)来验证身份验证是否有效,但由于某种原因它失败并且护照重定向到失败的登录链接。
如果有人可以帮助我弄清楚如何让这个示例简单地验证任何内容,我应该能够从那里进行管理。
CoffeeScript中的代码是:
express = require "express"
passport = require "passport"
LocalStrategy = require("passport-local").Strategy
passport.use(new LocalStrategy( (username, password, done) ->
console.log "LocalStrategy invoked"
done(null, {id: 1, name: "Marius"})
))
passport.serializeUser (user, done) ->
done null, user
passport.deserializeUser (obj, done) ->
done null, obj
app = express.createServer()
app.configure ->
app.use express.bodyParser()
app.use express.static("./public")
app.use express.cookieParser("SOMESECRET")
app.use express.session
secret: "SOMESECRET"
cookie:
maxAge: 60000
app.use passport.initialize()
app.use passport.session()
app.set "view", "./srv/views"
app.set "view engine", "jade"
app.get "/login", (req, res) ->
res.send "login page"
app.post "/login", passport.authenticate("local",
failureRedirect: "/failedRedirect"
successRedirect: "/successRedirect"
failureFlash: true)
app.listen 8082
Solved:好吧,我相信有几个原因导致我无法让它工作。序列化的东西可能是其中之一(我还没有测试过),但既然 Jared 说需要它们,我就把它们留在里面(他是 Passport 的作者)。另一个困惑可能与 Express 版本和我对 npm 的困惑有关。我相信我测试了最新的 Express v2,但我也测试了我现在正在运行的 v3。对于第三版,您可能应该查看connect-flash
Github 上的模块也是如此,因为 Jared 示例中使用的一些“flash”内容已从express v3 中移出(因此该模块将其放回...)。最后,确保您使用正确命名的输入名称进行发布(username
and password
默认情况下)。