freeCodeCamp/curriculum/challenges/russian/06-information-security-and.../advanced-node-and-express/how-to-use-passport-strateg...

5.5 KiB
Raw Blame History

id title challengeType videoUrl localeTitle
5895f70df9fc0f352b528e69 How to Use Passport Strategies 2 Как использовать паспортные стратегии

Description

Напомним, что этот проект строится на следующем стартовом проекте Glitch или клонируется из GitHub . В поставляемом файле index.pug есть форма входа. Ранее он был скрыт из-за встроенного javascript, if showLogin с формой с отступом после него. До того, как showLogin как переменная никогда не определялась, он никогда не отображал блок кода, содержащий форму. Идем дальше, и на res.render для этой страницы добавьте новую переменную в объект showLogin: true . Когда вы обновляете свою страницу, вы должны увидеть форму! Эта форма настроена на POST on / login, поэтому здесь мы должны настроить прием POST и аутентифицировать пользователя. Для этой задачи вы должны добавить маршрут / логин, чтобы принять запрос POST. Для аутентификации на этом маршруте вам нужно добавить промежуточное программное обеспечение, чтобы сделать это, прежде чем отправлять ответ. Это делается путем передачи другого аргумента с промежуточным программным обеспечением перед вашей function(req,res) с ответом! Промежуточное программное обеспечение для использования - passport.authenticate('local') . passport.authenticate также может принимать некоторые параметры в качестве аргумента, такие как: { failureRedirect: '/' } который невероятно полезен, поэтому обязательно добавьте его также. В качестве ответа после использования промежуточного программного обеспечения (которое будет вызываться только при прохождении промежуточного программного обеспечения аутентификации) необходимо перенаправить пользователя в / profile, и этот маршрут должен отобразить представление «profile.pug». Если аутентификация прошла успешно, пользовательский объект будет сохранен в req.user . Теперь, когда вы вводите имя пользователя и пароль в форме, оно должно перенаправляться на главную страницу /, а в консоли вашего сервера должно быть «Пользователь {USERNAME], пытающийся войти в систему». поскольку в настоящее время мы не можем войти в систему для пользователя, который не зарегистрирован. Представьте свою страницу, когда вы думаете, что у вас все в порядке. Если вы работаете в ошибки, вы можете проверить проект завершен до этого момента здесь .

Instructions

Tests

tests:
  - text: 'Все шаги, правильно выполненные на сервере server.js'
    testString: ' getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /showLogin:( |)true/gi, "You should be passing the variable "showLogin" as true to your render function for the homepage"); assert.match(data, /failureRedirect:( |)("|")\/("|")/gi, "Your code should include a failureRedirect to the "/" route"); assert.match(data, /login[^]*post[^]*local/gi, "You should have a route for login which accepts a POST and passport.authenticates local"); }, xhr => { throw new Error(xhr.statusText); })'
  - text: Запрос POST для / login правильно перенаправляет /
    testString: 'getUserInput => $.post(getUserInput("url")+ "/login") .then(data => { assert.match(data, /Looks like this page is being rendered from Pug into HTML!/gi, "A login attempt at this point should redirect to the homepage since we do not have any registered users"); }, xhr => { throw new Error(xhr.statusText); })'

Challenge Seed

Solution

// solution required