0

このコーヒースクリプトのパスポートの実装は、私には例のように見えますが、毎回失敗し、「戦略を試しています」と出力されることはありません。「/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() 
4

3 に答える 3

4

この問題は、私が急行を知らなかったことが原因であることがわかりました。ユーザー名とパスワードを送信していましたが、解析していませんでした.app.configureには、戦略を利用するためにexpress.bodyParser()が必要です。

于 2012-06-06T01:24:07.720 に答える
1

/ failにリダイレクトされる場合は、Passportがリクエストを処理していて、認証が成功していないことを示しています。ばかげた提案かもしれませんがusernamepasswordフィールドを含むフォームを投稿していますか?これらのいずれかが存在しない場合、それがローカル戦略の主な失敗事例です。

于 2012-06-05T17:04:09.080 に答える
0

コーヒーのスクリプトは信じられないほど読みにくいと思います (コーヒーの粉を私よりもよく読む人がいない限り、コンパイルされた JS バージョンも投稿するかもしれません)。とにかく、 pass.authenticate の呼び出しに関する構文が正しいと仮定すると (通常、応答を処理するカスタム コールバックで呼び出します)、際立っている 2 つの点は次のとおりです。

1) Passport.serializeUser と deserializeUser のセットアップがありません。

2) session:false で認証を呼び出し、独自のセッション設定を行わない限り、connect/express セッションをロードして構成する必要があると思います。

于 2012-06-05T04:29:03.690 に答える