Node.js护照跳过策略

时间:2012-06-05 04:11:17

标签: node.js passport.js

这个咖啡脚本护照实现看起来就像我的例子,但每次都失败,从不打印“尝试策略”。我只是被重定向到“/ fail”。我尝试命名策略以及在(req,res,next)处理程序中执行它。我还验证了发布的表单在这些字段中发送了用户名和密码,并尝试根据示例使用策略中的映射重命名它们无济于事。关于我忽略的任何提示?

pass = require 'passport'
strat = require('passport-local').Strategy
exp = require 'express'
app = exp.createServer()

# Configure strategy
pass.use new strat (username, password, done) ->
    #Logic to find user
    console.log("Trying out the strategy")
    user = {nm:username,ps:password}
    done(null,user)

app.configure () ->
    app.use (req,res,next) ->
        console.log("GOT A REQ")
        next()
    app.use pass.initialize()

ops = { failureRedirect: '/fail' }
app.post '/auth', pass.authenticate('local',ops), (req, res, next) ->
    console.log "what about here"

app.listen 1337

解决方案修改快速配置:

app.configure () ->
    app.use exp.bodyParser() 

3 个答案:

答案 0 :(得分:4)

原来这个问题是由于我对快递的无知。我发送了用户名和密码,但没有解析它 - app.configure需要express.bodyParser()才能使用这些策略。

答案 1 :(得分:1)

如果您被重定向到/失败,它会告诉我Passport正在处理请求并且身份验证不成功。也许是一个愚蠢的建议,但你是否在发布一个包含usernamepassword字段的表单?如果其中任何一个不存在,那就是本地策略中的主要失败案例。

答案 2 :(得分:0)

我发现咖啡脚本的东西令人难以置信地阅读(也许发布已编译的JS版本,除非有人比我更好地阅读咖啡渣)。无论如何,假设您调用pass.authenticate的语法是正确的(我通常使用自定义回调来调用它来处理响应),这两个突出的事情是:

1)您没有passport.serializeUser和deserializeUser设置。

2)除非你使用session调用authenticate:false并进行自己的会话设置,我认为需要加载和配置连接/表达会话。