【问题标题】:Node.js passport skips strategyNode.js 护照跳过策略
【发布时间】:2012-06-09 02:59:48
【问题描述】:

这个咖啡脚本护照实施看起来就像我的例子,但每次都失败并且从不打印“尝试策略”。我只是被重定向到“/失败”。我尝试命名策略并在 (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

解决方案修改 express 配置:

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

【问题讨论】:

    标签: node.js passport.js


    【解决方案1】:

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

    【讨论】:

    • 啊,对了!是的,快速样板有点烦人,但偶尔会有一些你不需要的东西,然后很高兴不同的组件是可选的。
    • 爱,爱,爱!在偶然发现你的 SO 帖子之前,我正在修改我的护照相关代码,试图解决这个问题。事实证明,一切实际上从一开始就有效。只有 bodyParser 丢失了。
    【解决方案2】:

    如果您被重定向到 /fail,这表明 Passport 正在处理请求并且身份验证不成功。也许是一个愚蠢的建议,但是您是否发布了带有 usernamepassword 字段的表单?如果其中任何一个都不存在,则这是本地策略中的主要失败案例。

    【讨论】:

    • 我查看了网络流量,并看到用户名和密码设置,它们在 POST 中出现了各自的值。
    【解决方案3】:

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

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

    2) 除非您使用 session:false 调用身份验证并进行自己的会话设置,否则我认为需要加载和配置连接/快速会话。

    【讨论】:

    • 我设置了 { session:false } 但它仍然没有使用我的策略。接下来我会尝试设置会话。也改成上面的js。
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 2015-03-20
    • 2021-02-11
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多