Node.js аутентификация пользователя с помощью passport

(обновлен код с функциями сериализации - по-прежнему перенаправляет на /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

Решено:Хорошо, я полагаю, что было несколько причин, по которым я не мог заставить его работать. Сериализующий материал может быть одним (Я не тестировал), но поскольку Джаред сказал, что они нужны, я оставляю их (он автор «Паспорта»). Другая путаница может быть связана с экспресс-версиями и моей путаницей с npm. Я считаю, что я протестировал оба последних v2 express, но я также протестировал v3, который я запускаю сейчас. Для третьей версии вам, вероятно, следует проверить модуль connect-flashна Github, так как некоторые «вспышки», которые используются в примерах Джареда, были перемещены из express v3 (поэтому модуль помещает его обратно в ...). И, наконец, убедитесь, что вы публикуете сообщения, используя правильные именованные входные имена ( usernameи passwordпо умолчанию).

8
задан laggingreflex 6 January 2015 в 14:36
поделиться