8

(シリアル化関数を使用してコードを更新 - 引き続き /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デフォルトで)。

4

3 に答える 3

12

ログイン セッションを確立するために必要なユーザー シリアル化ロジックが欠落しているように見えます。これら 2 つの関数を JavaScript コードに追加すると、機能します。

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});

必要に応じてユーザーをシリアル化する必要があります。詳細はこのページの下部にあります: http://passportjs.org/guide/configuration.html

于 2012-06-10T18:58:15.253 に答える
10

ポスト変数名は、ローカルパスワード戦略に問題を抱えている人々にとって最大の落とし穴になる傾向があります. ドキュメントではおそらく大きく太字にする必要があり、それらを変更するための構成値がおそらくあるはずです。

于 2012-06-11T14:01:17.703 に答える
1

このリンクから成功しました http://danialk.github.io/blog/2013/02/23/authentication-using-passportjs/ https://github.com/DanialK/PassportJS-Authenticationの場所 からサンプルコードをダウンロード

routes.js 変更コードで必要な変更は 1 つだけです

app.post("/login" ,passport.authenticate('local',{successRedirect : "/",failureRedirect : "/login",  }));

に - - - - - - - - - - - - - - -

app.post("/login" ,passport.authenticate('local',{failureRedirect : "/login"}), function(req,res){ res.render('your home page here', {user : req.user });});
于 2014-05-30T11:27:41.903 に答える