2012-06-05 2 views
0

Это оформление паспорта кофе-скрипта выглядит как примеры для меня, но терпит неудачу каждый раз и никогда не печатает «Попытка стратегии». Я просто перенаправляюсь на «/ fail». Я попытался назвать стратегию, а также выполнить ее в обработчике (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. Оказалось, что все работает с самого начала. Пропущено только тело. – Hunkpapa

0

Я нахожу вещи кофе сценарий невероятно грязный, чтобы читать (возможно разместить скомпилированные версии JS, тоже, если не тот, кто читает кофейная гуща лучше Я прихожу). В любом случае, если предположить, что ваш синтаксис вокруг вызова pass.authenticate верен (обычно я вызываю его с помощью специального обратного вызова, когда я обрабатываю ответ), две отличительные черты:

1) у вас нет паспорта.serializeUser и deserializeUser.

2) если вы не вызвали аутентификацию с сеансом: false и выполните свою собственную настройку сеанса, я думаю, что необходимо подключить/выполнить сеансы, загруженные и настроенные.

+0

Я установил {session: false}, и он по-прежнему не использовал мою стратегию. Я попробую настроить сеансы. Также переходим к js выше. – ace

1

Если вы получаете перенаправление на/сбой, он предлагает мне, чтобы Passport обрабатывал запрос и аутентификация не была успешной. Может быть, глупое предложение, но вы используете POST с формой username и password? Если любой из них отсутствует, это основной случай сбоя в локальной стратегии.

+0

Я наблюдал за сетевым трафиком, и я вижу, что имя пользователя и пароль заданы с их соответствующими значениями, входящими в POST. – ace

Смежные вопросы