使用护照的Node.js用户authentication

(具有序列化function的更新代码 – 仍然redirect到/ failedRedirect)

我正试图使用​​护照包进行简单的用户名/密码authentication,但是失败。 在下面的例子中,我试图通过基本上总是返回一个有效的身份validation来validation身份validation是否正常(不pipe通过什么),但是由于某种原因它失败了,护照redirect到失败的login链接。

如果有人能帮我弄清楚如何让这个例子简单地authentication任何东西,我应该能够从那里pipe理。

在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 

解决:好吧,我相信有几个原因让我无法正常工作。 序列化的东西可能是一个(我没有testing过),但是因为Jared说他们需要,所以我把他们留在(他是Passport的作者)。 其他的混淆可能与快递版本有关,与npm混淆。 我相信我testing了最新的v2,但我也testing了v3,现在我正在运行。 对于第三个版本,你可能应该检查Github上的connect-flash模块,因为在Jared的例子中使用的“闪存”的一些东西被移出了快速v3(所以模块把它放回… )。 最后,确保您使用正确的命名input名称(默认情况下, usernamepassword )。

它看起来像我缺less必要的用户序列化逻辑来build立一个login会话。 如果我将这两个函数添加到JavaScript代码,它将起作用:

 passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); 

你会想根据你的需要序列化用户。 详细信息位于此页面的底部: http : //passportjs.org/guide/configuration.html

后期variables名称往往是我看到有本地密码策略的麻烦的人最大的困扰。 在文档中它应该是大而大胆的,应该可能有configuration值来改变它们。

我已经从这个链接http://danialk.github.io/blog/2013/02/23/authentication-using-passportjs/从https://github.com/DanialK/PassportJS-Authentication位置下载示例代码succsessfully

在routes.js中更改代码只需要一个更改

 app.post("/login" ,passport.authenticate('local',{successRedirect : "/",failureRedirect : "/login", })); 

至 – – – – – – – – – – – – – – –

 app.post("/login" ,passport.authenticate('local',{failureRedirect : "/login"}), function(req,res){ res.render('your home page here', {user : req.user });});