(シリアル化関数を使用してコードを更新 - 引き続き /failedRedirect にリダイレクト)
パスポートパッケージを使用して簡単なユーザー名/パスワード認証を行おうとしていますが、失敗しています。以下の例では、基本的に常に有効な認証を返すことによって認証が機能することを確認しようとしました (何が渡されたかに関係なく) が、何らかの理由で失敗し、パスポートは失敗したログイン リンクにリダイレクトされます。
この例を単純に認証する方法を理解するのに誰かが私を助けてくれれば、そこから管理できるはずです.
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
解決済み:わかりました。動作しない理由がいくつかあると思います。シリアル化のものは 1 つかもしれません (私はテストしていません) が、Jared がそれらが必要だと言ったので、私はそれらを残します (彼は Passport の作成者です)。他の混乱は、高速バージョンと npm との混乱に関連している可能性があります。Express の最新の v2 の両方をテストしたと思いますが、現在実行している v3 もテストしました。connect-flash
バージョン 3 については、Jared の例で使用されている「フラッシュ」機能の一部が Express v3 から移動されたため、Githubのモジュールもチェックアウトする必要があります (したがって、モジュールはそれを元に戻します...)。最後に、適切な名前の入力名を使用して投稿するようにしてください (username
およびpassword
デフォルトで)。