2012-06-05 80 views
0

此咖啡腳本護照實施看起來就像我的例子,但每次都失敗並且從不打印「嘗試策略」。我只是被重定向到「/失敗」。我嘗試命名策略並在(req,res,next)處理程序中執行它。我還驗證了發佈的表單在這些字段中發送了用戶名和密碼,並試圖根據示例將策略中的映射重命名爲無效。關於我忽略的任何提示?Node.js護照跳過策略

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() 

回答

4

原來這個問題是由於我對錶達的無知。我正在發送用戶名和密碼,但沒有解析它 - app.configure需要express.bodyParser()才能使用這些策略。

+0

很高興你的工作! –

+0

啊,對!是的,快速鍋爐板有點煩人,但偶爾也有一些你不需要的東西,然後很好,不同的組件是可選的。 –

+0

愛,愛,愛!我正在修改我的護照相關代碼,超越所有認可,試圖解決這個問題,然後陷入您的SO帖子。事實證明,從一開始,所有事情都在實際上起作用。只有bodyParser失蹤。 – Hunkpapa

0

我找到咖啡腳本的東西令人難以置信的凌亂閱讀(也許張貼編譯JS版本也是如此,除非有人誰讀的咖啡渣優於我來了)。無論如何,假設你的語法調用pass.authenticate是正確的(我通常稱它爲自定義回調,我處理響應)突出的兩件事是:

1)你沒有passport.serializeUser並反序列化用戶設置。 2)除非你使用會話進行身份驗證:false,並進行自己的會話設置,我認爲連接/表達會話已加載並配置是必需的。

+0

我設置了{session:false},但它仍然沒有使用我的策略。接下來我會嘗試設置會話。也改爲上面的js。 – ace

1

如果您被重定向到/失敗,它向我建議Passport正在處理請求並且身份驗證不成功。也許一個愚蠢的建議,但你張貼usernamepassword字段?如果其中任何一個都不存在,那就是本地戰略的主要失敗案例。

+0

我看過網絡流量,並看到用戶名和密碼設置了它們各自在POST中的值。 – ace